summaryrefslogtreecommitdiff
path: root/plugins/gtkui
diff options
context:
space:
mode:
authorGravatar Alexey Yakovenko <waker@users.sourceforge.net>2014-04-28 20:01:46 +0200
committerGravatar Alexey Yakovenko <waker@users.sourceforge.net>2014-04-28 20:04:09 +0200
commit6b598c15d1eb4804d5e369d8cb268d46c5dba59a (patch)
tree3ee0064a862599f7b6dceb0670f6631dee1886e1 /plugins/gtkui
parent54d4b18b27b19007497368f385204dc78a331572 (diff)
gtkui: added downgradable layout config support, that is, allowing downgrading deadbeef from higher to lower versions without loosing the layout setup, implemented by seraparating layout config for each version
Diffstat (limited to 'plugins/gtkui')
-rw-r--r--plugins/gtkui/gtkui.c32
-rw-r--r--plugins/gtkui/gtkui_api.h5
-rw-r--r--plugins/gtkui/widgets.c2
3 files changed, 24 insertions, 15 deletions
diff --git a/plugins/gtkui/gtkui.c b/plugins/gtkui/gtkui.c
index 2fa2173c..6f3760a9 100644
--- a/plugins/gtkui/gtkui.c
+++ b/plugins/gtkui/gtkui.c
@@ -822,20 +822,26 @@ init_widget_layout (void) {
gtk_box_pack_start (GTK_BOX(lookup_widget(mainwin, "plugins_bottom_vbox")), rootwidget->widget, TRUE, TRUE, 0);
// load layout
+ // config var name is defined in DDB_GTKUI_CONF_LAYOUT
+ // gtkui.layout: 0.6.0 and 0.6.1
+ // gtkui.layout.major.minor.point: later versions
+
char layout[20000];
- deadbeef->conf_get_str ("gtkui.layout", gtkui_def_layout, layout, sizeof (layout));
-
- int upgraded_062 = deadbeef->conf_get_int ("gtkui.layout_062_upgraded", 0);
- if (strcmp (layout, gtkui_def_layout) && !upgraded_062) {
- // add top bar
- char layout_upgrade[20000];
- snprintf (layout_upgrade, sizeof (layout_upgrade), "vbox expand=\"0 1\" fill=\"1 1\" homogeneous=0 {hbox expand=\"0 1 0\" fill=\"1 1 1\" homogeneous=0 {playtb {} seekbar {} volumebar {} } %s }", layout);
- strcpy (layout, layout_upgrade);
- deadbeef->conf_set_str ("gtkui.layout", layout);
- }
- if (!upgraded_062) {
- deadbeef->conf_set_int ("gtkui.layout_062_upgraded", 1);
- deadbeef->conf_save ();
+ deadbeef->conf_get_str (DDB_GTKUI_CONF_LAYOUT, "-", layout, sizeof (layout));
+ if (!strcmp (layout, "-")) {
+ // upgrade from 0.6.0 to 0.6.2
+ char layout_060[20000];
+ deadbeef->conf_get_str ("gtkui.layout", "-", layout_060, sizeof (layout_060));
+ if (!strcmp (layout_060, "-")) {
+ // new setup
+ strcpy (layout, gtkui_def_layout);
+ }
+ else {
+ // upgrade with top bar
+ snprintf (layout, sizeof (layout), "vbox expand=\"0 1\" fill=\"1 1\" homogeneous=0 {hbox expand=\"0 1 0\" fill=\"1 1 1\" homogeneous=0 {playtb {} seekbar {} volumebar {} } %s }", layout_060);
+ deadbeef->conf_set_str (DDB_GTKUI_CONF_LAYOUT, layout);
+ deadbeef->conf_save ();
+ }
}
ddb_gtkui_widget_t *w = NULL;
diff --git a/plugins/gtkui/gtkui_api.h b/plugins/gtkui/gtkui_api.h
index c8057339..a3dd95d2 100644
--- a/plugins/gtkui/gtkui_api.h
+++ b/plugins/gtkui/gtkui_api.h
@@ -44,7 +44,10 @@
#endif
#define DDB_GTKUI_API_VERSION_MAJOR 2
-#define DDB_GTKUI_API_VERSION_MINOR 0
+#define DDB_GTKUI_API_VERSION_MINOR 1
+
+// added in API 2.1
+#define DDB_GTKUI_CONF_LAYOUT "gtkui.layout.0.6.2"
// this flag tells that the widget should be added to h/vboxes with expand=FALSE
#define DDB_GTKUI_WIDGET_FLAG_NON_EXPANDABLE 0x00000001
diff --git a/plugins/gtkui/widgets.c b/plugins/gtkui/widgets.c
index 2d499464..2f9ff7af 100644
--- a/plugins/gtkui/widgets.c
+++ b/plugins/gtkui/widgets.c
@@ -479,7 +479,7 @@ void
w_save (void) {
char buf[20000] = "";
save_widget_to_string (buf, sizeof (buf), rootwidget->children);
- deadbeef->conf_set_str ("gtkui.layout", buf);
+ deadbeef->conf_set_str (DDB_GTKUI_CONF_LAYOUT, buf);
deadbeef->conf_save ();
}