summaryrefslogtreecommitdiff
path: root/mate-panel
diff options
context:
space:
mode:
authorStefano Karapetsas <[email protected]>2014-02-18 16:23:48 +0100
committerStefano Karapetsas <[email protected]>2014-02-18 16:23:48 +0100
commit33c1874fbb17ed83c6d24103eff09c83297e0c4d (patch)
treebb314fc4831721be0e3da08d6fd07251137087e6 /mate-panel
parent453154a00f0f17e20340e408055e224ea57cc4e8 (diff)
downloadmate-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.c27
-rw-r--r--mate-panel/panel-schemas.h1
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"