diff options
author | Stefano Karapetsas <[email protected]> | 2014-02-18 16:23:48 +0100 |
---|---|---|
committer | Stefano Karapetsas <[email protected]> | 2014-02-18 16:23:48 +0100 |
commit | 33c1874fbb17ed83c6d24103eff09c83297e0c4d (patch) | |
tree | bb314fc4831721be0e3da08d6fd07251137087e6 /mate-panel | |
parent | 453154a00f0f17e20340e408055e224ea57cc4e8 (diff) | |
download | mate-panel-33c1874fbb17ed83c6d24103eff09c83297e0c4d.tar.bz2 mate-panel-33c1874fbb17ed83c6d24103eff09c83297e0c4d.tar.xz |
Allow to have multiple panel layouts
Diffstat (limited to 'mate-panel')
-rw-r--r-- | mate-panel/panel-layout.c | 27 | ||||
-rw-r--r-- | mate-panel/panel-schemas.h | 1 |
2 files changed, 18 insertions, 10 deletions
diff --git a/mate-panel/panel-layout.c b/mate-panel/panel-layout.c index 47324208..f7554990 100644 --- a/mate-panel/panel-layout.c +++ b/mate-panel/panel-layout.c @@ -37,8 +37,7 @@ #include "panel-schemas.h" #include "panel-enums.h" -#define PANEL_LAYOUT_MATE_FILE PANELDATADIR "/panel-default-layout.mate" -#define PANEL_LAYOUT_DIST_FILE PANELDATADIR "/panel-default-layout.dist" +#define PANEL_LAYOUTS_DIR PANELDATADIR "/layouts/" typedef struct { const char *name; @@ -91,15 +90,23 @@ static PanelLayoutKeyDefinition panel_layout_object_keys[] = { * distributions */ static gchar * -panel_layout_filename () { - - if (g_file_test (PANEL_LAYOUT_DIST_FILE, G_FILE_TEST_IS_REGULAR)) { - return g_strdup (PANEL_LAYOUT_DIST_FILE); - } - else if (g_file_test (PANEL_LAYOUT_MATE_FILE, G_FILE_TEST_IS_REGULAR)) { - return g_strdup (PANEL_LAYOUT_MATE_FILE); +panel_layout_filename () +{ + GSettings *settings; + gchar *layout; + gchar *filename; + + settings = g_settings_new (PANEL_SCHEMA); + layout = g_settings_get_string (settings, PANEL_DEFAULT_LAYOUT); + filename = g_strdup_printf (PANEL_LAYOUTS_DIR "%s.layout", layout); + g_free (layout); + g_object_unref (settings); + + if (g_file_test (filename, G_FILE_TEST_IS_REGULAR)) { + return filename; } else { + g_free (filename); return NULL; } } @@ -341,7 +348,7 @@ panel_layout_apply_default_from_gkeyfile (GdkScreen *screen) } else { - g_warning ("Cant find a default layout file!"); + g_warning ("Cant find the layout file!"); /* FIXME implement a fallback panel */ } diff --git a/mate-panel/panel-schemas.h b/mate-panel/panel-schemas.h index c21a8464..ee7c894b 100644 --- a/mate-panel/panel-schemas.h +++ b/mate-panel/panel-schemas.h @@ -10,6 +10,7 @@ #define PANEL_OBJECT_DEFAULT_PREFIX "object" #define PANEL_SCHEMA "org.mate.panel" +#define PANEL_DEFAULT_LAYOUT "default-layout" #define PANEL_TOPLEVEL_ID_LIST_KEY "toplevel-id-list" #define PANEL_OBJECT_ID_LIST_KEY "object-id-list" #define PANEL_LOCKED_DOWN_KEY "locked-down" |