summaryrefslogtreecommitdiff
path: root/applets/wncklet/workspace-switcher.c
diff options
context:
space:
mode:
authorStefano Karapetsas <[email protected]>2012-10-11 00:08:04 +0200
committerStefano Karapetsas <[email protected]>2012-10-11 00:08:04 +0200
commitb9c880c58aba32356ee1a4f1e5f45defd5dfb895 (patch)
tree981fb56120699ac2eb41d47937116e6b1f9998c2 /applets/wncklet/workspace-switcher.c
parent7a578190a730ddef00cfe770aa67608eb07213b5 (diff)
downloadmate-panel-b9c880c58aba32356ee1a4f1e5f45defd5dfb895.tar.bz2
mate-panel-b9c880c58aba32356ee1a4f1e5f45defd5dfb895.tar.xz
update notification_area
Diffstat (limited to 'applets/wncklet/workspace-switcher.c')
-rw-r--r--applets/wncklet/workspace-switcher.c160
1 files changed, 52 insertions, 108 deletions
diff --git a/applets/wncklet/workspace-switcher.c b/applets/wncklet/workspace-switcher.c
index 3fcd5085..4d24663f 100644
--- a/applets/wncklet/workspace-switcher.c
+++ b/applets/wncklet/workspace-switcher.c
@@ -15,14 +15,14 @@
#include <string.h>
#include <mate-panel-applet.h>
-#include <mate-panel-applet-mateconf.h>
+#include <mate-panel-applet-gsettings.h>
#include <stdlib.h>
#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include <libmatewnck/libmatewnck.h>
-#include <mateconf/mateconf-client.h>
+#include <gio/gio.h>
#include "workspace-switcher.h"
@@ -32,9 +32,13 @@
#define MAX_REASONABLE_ROWS 16
#define DEFAULT_ROWS 1
+#define WORKSPACE_SWITCHER_SCHEMA "org.mate.panel.applet.workspace-switcher"
+
#define NEVER_SENSITIVE "never_sensitive"
-#define NUM_WORKSPACES "/apps/marco/general/num_workspaces"
-#define WORKSPACE_NAME "/apps/marco/workspace_names/name_1"
+#define MARCO_GENERAL_SCHEMA "org.mate.Marco.general"
+#define NUM_WORKSPACES "num-workspaces"
+#define MARCO_WORSKACES_SCHEMA "org.mate.Marco.workspace-names"
+#define WORKSPACE_NAME "name-1"
#define WORKSPACE_SWITCHER_ICON "mate-panel-workspace-switcher"
@@ -71,8 +75,7 @@ typedef struct {
MatewnckPagerDisplayMode display_mode;
gboolean display_all;
- /* mateconf listeners id */
- guint listeners[3];
+ GSettings* settings;
} PagerData;
static void display_properties_dialog(GtkAction* action, PagerData* pager);
@@ -289,17 +292,7 @@ static gboolean applet_scroll(MatePanelApplet* applet, GdkEventScroll* event, Pa
static void destroy_pager(GtkWidget* widget, PagerData* pager)
{
- MateConfClient* client = mateconf_client_get_default();
-
- mateconf_client_notify_remove(client, pager->listeners[0]);
- mateconf_client_notify_remove(client, pager->listeners[1]);
- mateconf_client_notify_remove(client, pager->listeners[2]);
-
- g_object_unref(G_OBJECT(client));
-
- pager->listeners[0] = 0;
- pager->listeners[1] = 0;
- pager->listeners[2] = 0;
+ g_object_unref (pager->settings);
if (pager->properties_dialog)
gtk_widget_destroy(pager->properties_dialog);
@@ -334,14 +327,11 @@ static const GtkActionEntry pager_menu_actions[] = {
}
};
-static void num_rows_changed(MateConfClient* client, guint cnxn_id, MateConfEntry* entry, PagerData* pager)
+static void num_rows_changed(GSettings* settings, gchar* key, PagerData* pager)
{
int n_rows = DEFAULT_ROWS;
- if (entry->value != NULL && entry->value->type == MATECONF_VALUE_INT)
- {
- n_rows = mateconf_value_get_int(entry->value);
- }
+ n_rows = g_settings_get_int (settings, key);
n_rows = CLAMP(n_rows, 1, MAX_REASONABLE_ROWS);
@@ -352,14 +342,11 @@ static void num_rows_changed(MateConfClient* client, guint cnxn_id, MateConfEntr
gtk_spin_button_set_value(GTK_SPIN_BUTTON(pager->num_rows_spin), pager->n_rows);
}
-static void display_workspace_names_changed(MateConfClient* client, guint cnxn_id, MateConfEntry* entry, PagerData* pager)
+static void display_workspace_names_changed(GSettings* settings, gchar* key, PagerData* pager)
{
gboolean value = FALSE; /* Default value */
- if (entry->value != NULL && entry->value->type == MATECONF_VALUE_BOOL)
- {
- value = mateconf_value_get_bool(entry->value);
- }
+ value = g_settings_get_boolean (settings, key);
if (value)
{
@@ -379,14 +366,11 @@ static void display_workspace_names_changed(MateConfClient* client, guint cnxn_i
}
-static void all_workspaces_changed(MateConfClient* client, guint cnxn_id, MateConfEntry* entry, PagerData* pager)
+static void all_workspaces_changed(GSettings* settings, gchar* key, PagerData* pager)
{
gboolean value = TRUE; /* Default value */
- if (entry->value != NULL && entry->value->type == MATECONF_VALUE_BOOL)
- {
- value = mateconf_value_get_bool(entry->value);
- }
+ value = g_settings_get_boolean (settings, key);
pager->display_all = value;
pager_update(pager);
@@ -410,30 +394,22 @@ static void all_workspaces_changed(MateConfClient* client, guint cnxn_id, MateCo
}
}
-static void setup_mateconf(PagerData* pager)
+static void setup_gsettings(PagerData* pager)
{
- MateConfClient* client;
- char* key;
-
- client = mateconf_client_get_default();
-
- key = mate_panel_applet_mateconf_get_full_key(MATE_PANEL_APPLET(pager->applet), "num_rows");
- pager->listeners[0] = mateconf_client_notify_add(client, key, (MateConfClientNotifyFunc) num_rows_changed, pager, NULL, NULL);
-
- g_free(key);
-
-
- key = mate_panel_applet_mateconf_get_full_key(MATE_PANEL_APPLET(pager->applet), "display_workspace_names");
- pager->listeners[1] = mateconf_client_notify_add(client, key, (MateConfClientNotifyFunc) display_workspace_names_changed, pager, NULL, NULL);
-
- g_free(key);
-
- key = mate_panel_applet_mateconf_get_full_key(MATE_PANEL_APPLET(pager->applet), "display_all_workspaces");
- pager->listeners[2] = mateconf_client_notify_add(client, key, (MateConfClientNotifyFunc) all_workspaces_changed, pager, NULL, NULL);
+ pager->settings = mate_panel_applet_settings_new (MATE_PANEL_APPLET (pager->applet), WORKSPACE_SWITCHER_SCHEMA);
- g_free(key);
-
- g_object_unref(G_OBJECT(client));
+ g_signal_connect (pager->settings,
+ "changed::num-rows",
+ G_CALLBACK (num_rows_changed),
+ pager);
+ g_signal_connect (pager->settings,
+ "changed::display-workspace-names",
+ G_CALLBACK (display_workspace_names_changed),
+ pager);
+ g_signal_connect (pager->settings,
+ "changed::display-all-workspaces",
+ G_CALLBACK (all_workspaces_changed),
+ pager);
}
gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
@@ -441,40 +417,21 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
PagerData* pager;
GtkActionGroup* action_group;
gchar* ui_path;
- GError* error;
gboolean display_names;
- mate_panel_applet_add_preferences(applet, "/schemas/apps/workspace_switcher_applet/prefs", NULL);
-
pager = g_new0(PagerData, 1);
pager->applet = GTK_WIDGET(applet);
mate_panel_applet_set_flags(MATE_PANEL_APPLET(pager->applet), MATE_PANEL_APPLET_EXPAND_MINOR);
- setup_mateconf(pager);
+ setup_gsettings(pager);
- error = NULL;
- pager->n_rows = mate_panel_applet_mateconf_get_int(applet, "num_rows", &error);
-
- if (error)
- {
- g_printerr(_("Error loading num_rows value for Workspace Switcher: %s\n"), error->message);
- g_error_free(error);
- /* leave current value */
- }
+ pager->n_rows = g_settings_get_int(pager->settings, "num-rows");
pager->n_rows = CLAMP(pager->n_rows, 1, MAX_REASONABLE_ROWS);
- error = NULL;
- display_names = mate_panel_applet_mateconf_get_bool(applet, "display_workspace_names", &error);
-
- if (error)
- {
- g_printerr(_("Error loading display_workspace_names value for Workspace Switcher: %s\n"), error->message);
- g_error_free(error);
- /* leave current value */
- }
+ display_names = g_settings_get_boolean(pager->settings, "display-workspace-names");
if (display_names)
{
@@ -485,15 +442,7 @@ gboolean workspace_switcher_applet_fill(MatePanelApplet* applet)
pager->display_mode = MATEWNCK_PAGER_DISPLAY_CONTENT;
}
- error = NULL;
- pager->display_all = mate_panel_applet_mateconf_get_bool(applet, "display_all_workspaces", &error);
-
- if (error)
- {
- g_printerr(_("Error loading display_all_workspaces value for Workspace Switcher: %s\n"), error->message);
- g_error_free(error);
- /* leave current value */
- }
+ pager->display_all = g_settings_get_boolean(pager->settings, "display-all-workspaces");
switch (mate_panel_applet_get_orient(applet))
{
@@ -591,17 +540,17 @@ static void display_about_dialog(GtkAction* action, PagerData* pager)
static void display_workspace_names_toggled(GtkToggleButton*button, PagerData* pager)
{
- mate_panel_applet_mateconf_set_bool(MATE_PANEL_APPLET(pager->applet), "display_workspace_names", gtk_toggle_button_get_active(button), NULL);
+ g_settings_set_boolean(pager->settings, "display-workspace-names", gtk_toggle_button_get_active(button));
}
static void all_workspaces_toggled(GtkToggleButton* button, PagerData* pager)
{
- mate_panel_applet_mateconf_set_bool(MATE_PANEL_APPLET(pager->applet), "display_all_workspaces", gtk_toggle_button_get_active(button), NULL);
+ g_settings_set_boolean(pager->settings, "display-all-workspaces", gtk_toggle_button_get_active(button));
}
static void num_rows_value_changed(GtkSpinButton* button, PagerData* pager)
{
- mate_panel_applet_mateconf_set_int(MATE_PANEL_APPLET(pager->applet), "num_rows", gtk_spin_button_get_value_as_int(button), NULL);
+ g_settings_set_int(pager->settings, "num-rows", gtk_spin_button_get_value_as_int(button));
}
static void update_workspaces_model(PagerData* pager)
@@ -752,28 +701,15 @@ static void close_dialog(GtkWidget* button, gpointer data)
#define WID(s) GTK_WIDGET(gtk_builder_get_object(builder, s))
static void
-setup_sensitivity(PagerData* pager, GtkBuilder* builder, const char* wid1, const char* wid2, const char* wid3, const char* key)
+setup_sensitivity(PagerData* pager, GtkBuilder* builder, const char* wid1, const char* wid2, const char* wid3, GSettings* settings, const char* key)
{
- MatePanelApplet* applet = MATE_PANEL_APPLET(pager->applet);
- MateConfClient* client = mateconf_client_get_default();
- char* fullkey;
GtkWidget* w;
- if (key[0] == '/')
- fullkey = g_strdup(key);
- else
- fullkey = mate_panel_applet_mateconf_get_full_key(applet, key);
-
- if (mateconf_client_key_is_writable(client, fullkey, NULL))
+ if (g_settings_is_writable(settings, key))
{
- g_object_unref(G_OBJECT(client));
- g_free(fullkey);
return;
}
- g_object_unref(G_OBJECT(client));
- g_free(fullkey);
-
w = WID(wid1);
g_assert(w != NULL);
g_object_set_data(G_OBJECT(w), NEVER_SENSITIVE, GINT_TO_POINTER(1));
@@ -802,27 +738,35 @@ static void setup_dialog(GtkBuilder* builder, PagerData* pager)
GtkTreeViewColumn* column;
GtkCellRenderer* cell;
int nr_ws, i;
+ GSettings *marco_general_settings;
+ GSettings *marco_workspaces_settings;
+
+ marco_general_settings = g_settings_new (MARCO_GENERAL_SCHEMA);
+ marco_workspaces_settings = g_settings_new (MARCO_WORSKACES_SCHEMA);
pager->workspaces_frame = WID("workspaces_frame");
pager->workspace_names_label = WID("workspace_names_label");
pager->workspace_names_scroll = WID("workspace_names_scroll");
pager->display_workspaces_toggle = WID("workspace_name_toggle");
- setup_sensitivity(pager, builder, "workspace_name_toggle", NULL, NULL, "display_workspace_names" /* key */);
+ setup_sensitivity(pager, builder, "workspace_name_toggle", NULL, NULL, pager->settings, "display-workspace-names" /* key */);
pager->all_workspaces_radio = WID("all_workspaces_radio");
pager->current_only_radio = WID("current_only_radio");
- setup_sensitivity(pager, builder, "all_workspaces_radio", "current_only_radio", "label_row_col", "display_all_workspaces" /* key */);
+ setup_sensitivity(pager, builder, "all_workspaces_radio", "current_only_radio", "label_row_col", pager->settings, "display-all-workspaces" /* key */);
pager->num_rows_spin = WID("num_rows_spin");
pager->label_row_col = WID("label_row_col");
- setup_sensitivity(pager, builder, "num_rows_spin", NULL, NULL, "num_rows" /* key */);
+ setup_sensitivity(pager, builder, "num_rows_spin", NULL, NULL, pager->settings, "num-rows" /* key */);
pager->num_workspaces_spin = WID("num_workspaces_spin");
- setup_sensitivity(pager, builder, "num_workspaces_spin", NULL, NULL, NUM_WORKSPACES /* key */);
+ setup_sensitivity(pager, builder, "num_workspaces_spin", NULL, NULL, marco_general_settings, NUM_WORKSPACES /* key */);
pager->workspaces_tree = WID("workspaces_tree_view");
- setup_sensitivity(pager, builder, "workspaces_tree_view", NULL, NULL, WORKSPACE_NAME /* key */);
+ setup_sensitivity(pager, builder, "workspaces_tree_view", NULL, NULL, marco_workspaces_settings, WORKSPACE_NAME /* key */);
+
+ g_object_unref (marco_general_settings);
+ g_object_unref (marco_workspaces_settings);
/* Display workspace names: */