diff options
Diffstat (limited to 'plugins')
-rw-r--r-- | plugins/gtkui/gtkui.c | 17 | ||||
-rw-r--r-- | plugins/gtkui/widgets.c | 36 | ||||
-rw-r--r-- | plugins/gtkui/widgets.h | 3 |
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 |