summaryrefslogtreecommitdiff
path: root/plugins
diff options
context:
space:
mode:
Diffstat (limited to 'plugins')
-rw-r--r--plugins/gtkui/gtkui.c17
-rw-r--r--plugins/gtkui/widgets.c36
-rw-r--r--plugins/gtkui/widgets.h3
3 files changed, 41 insertions, 15 deletions
diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c
index 4ff2fca6..aa7da8b7 100644
--- a/plugins/gtkui/gtkui.c
+++ b/plugins/gtkui/gtkui.c
@@ -994,15 +994,26 @@ gtkui_thread (void *ctx) {
// construct mainwindow widgets
{
+
w_init ();
ddb_gtkui_widget_t *rootwidget = w_get_rootwidget ();
gtk_widget_show (rootwidget->widget);
gtk_box_pack_start (GTK_BOX(lookup_widget(mainwin, "plugins_bottom_vbox")), rootwidget->widget, TRUE, TRUE, 0);
+ // load layout
+ char layout[1024];
+ deadbeef->conf_get_str ("gtkui.layout", "tabbed_playlist { }", layout, sizeof (layout));
- ddb_gtkui_widget_t *plt = w_create ("tabbed_playlist");
- w_append (rootwidget, plt);
- gtk_widget_show (plt->widget);
+ ddb_gtkui_widget_t *w = NULL;
+ w_create_from_string (layout, &w);
+ if (!w) {
+ ddb_gtkui_widget_t *plt = w_create ("tabbed_playlist");
+ w_append (rootwidget, plt);
+ gtk_widget_show (plt->widget);
+ }
+ else {
+ w_append (rootwidget, w);
+ }
}
gtkpl_init ();
diff --git a/plugins/gtkui/widgets.c b/plugins/gtkui/widgets.c
index 3b5087e4..549ec9fe 100644
--- a/plugins/gtkui/widgets.c
+++ b/plugins/gtkui/widgets.c
@@ -244,6 +244,26 @@ w_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data) {
return FALSE;
}
+static char paste_buffer[1000];
+
+static void
+save_widget_to_string (char *str, ddb_gtkui_widget_t *w) {
+ strcat (str, w->type);
+ strcat (str, "{");
+ for (ddb_gtkui_widget_t *c = w->children; c; c = c->next) {
+ save_widget_to_string (str, c);
+ }
+ strcat (str, "} ");
+}
+
+void
+w_save (void) {
+ char buf[1000] = "";
+ save_widget_to_string (buf, rootwidget->children);
+ deadbeef->conf_set_str ("gtkui.layout", buf);
+ deadbeef->conf_save ();
+}
+
static void
on_replace_activate (GtkMenuItem *menuitem, gpointer user_data) {
for (w_creator_t *cr = w_creators; cr; cr = cr->next) {
@@ -251,6 +271,7 @@ on_replace_activate (GtkMenuItem *menuitem, gpointer user_data) {
w_replace (current_widget->parent, current_widget, w_create (user_data));
}
}
+ w_save ();
}
static void
@@ -268,18 +289,7 @@ on_delete_activate (GtkMenuItem *menuitem, gpointer user_data) {
current_widget = w_create ("placeholder");
w_append (parent, current_widget);
}
-}
-
-static char paste_buffer[1000];
-
-static void
-save_widget_to_string (char *str, ddb_gtkui_widget_t *w) {
- strcat (str, w->type);
- strcat (str, "{");
- for (ddb_gtkui_widget_t *c = w->children; c; c = c->next) {
- save_widget_to_string (str, c);
- }
- strcat (str, "} ");
+ w_save ();
}
static void
@@ -303,6 +313,7 @@ on_cut_activate (GtkMenuItem *menuitem, gpointer user_data) {
w_append (parent, current_widget);
}
printf ("%s\n", paste_buffer);
+ w_save ();
}
static void
@@ -335,6 +346,7 @@ on_paste_activate (GtkMenuItem *menuitem, gpointer user_data) {
current_widget = w;
w_append (parent, current_widget);
}
+ w_save ();
}
void
diff --git a/plugins/gtkui/widgets.h b/plugins/gtkui/widgets.h
index 3da9cc20..0d7eb21a 100644
--- a/plugins/gtkui/widgets.h
+++ b/plugins/gtkui/widgets.h
@@ -75,4 +75,7 @@ w_placeholder_create (void);
ddb_gtkui_widget_t *
w_tabs_create (void);
+const char *
+w_create_from_string (const char *s, ddb_gtkui_widget_t **parent);
+
#endif