[gnome-panel/wip/3.0-freeze-break] workspace switcher: GSettings port
- From: Ryan Lortie <ryanl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-panel/wip/3.0-freeze-break] workspace switcher: GSettings port
- Date: Mon, 28 Mar 2011 08:29:26 +0000 (UTC)
commit ddac6610713f25421b47d973bfb517e8d93d0aac
Author: Ryan Lortie <desrt desrt ca>
Date: Mon Mar 28 13:55:25 2011 +0530
workspace switcher: GSettings port
applets/wncklet/Makefile.am | 22 +--
applets/wncklet/workspace-switcher.c | 192 +++++---------------
applets/wncklet/workspace-switcher.schemas.in | 52 ------
...ome-panel.applet.workspace-switcher.gschema.xml | 1 +
4 files changed, 44 insertions(+), 223 deletions(-)
---
diff --git a/applets/wncklet/Makefile.am b/applets/wncklet/Makefile.am
index cbd0aef..4fc39f4 100644
--- a/applets/wncklet/Makefile.am
+++ b/applets/wncklet/Makefile.am
@@ -83,32 +83,12 @@ xmlui_DATA = \
workspace-switcher-menu.xml \
window-list-menu.xml
-schemasdir = $(GCONF_SCHEMA_FILE_DIR)
-schemas_in_files = workspace-switcher.schemas.in
-schemas_DATA = $(schemas_in_files:.schemas.in=.schemas)
-
- INTLTOOL_SCHEMAS_RULE@
-
-if GCONF_SCHEMAS_INSTALL
-install-data-local:
- if test -z "$(DESTDIR)" ; then \
- for p in $(schemas_DATA) ; do \
- GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-install-rule $(top_builddir)/applets/wncklet/$$p ; \
- done \
- fi
-uninstall-local:
- for p in $(schema_DATA) ; do \
- GCONF_CONFIG_SOURCE=$(GCONF_SCHEMA_CONFIG_SOURCE) $(GCONFTOOL) --makefile-uninstall-rule $(top_builddir)/applets/wncklet/$$p ; \
- done
-endif
-
EXTRA_DIST = \
org.gnome.panel.Wncklet.panel-applet.in.in \
$(service_in_files) \
$(xmlui_DATA) \
- $(schemas_in_files) \
$(ui_DATA)
-CLEANFILES = $(schemas_DATA) $(applet_DATA) $(applet_DATA).in $(service_DATA)
+CLEANFILES = $(applet_DATA) $(applet_DATA).in $(service_DATA)
-include $(top_srcdir)/git.mk
diff --git a/applets/wncklet/workspace-switcher.c b/applets/wncklet/workspace-switcher.c
index f578139..9d5cdd4 100644
--- a/applets/wncklet/workspace-switcher.c
+++ b/applets/wncklet/workspace-switcher.c
@@ -15,26 +15,18 @@
#include <string.h>
#include <panel-applet.h>
-#include <panel-applet-gconf.h>
#include <stdlib.h>
#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include <libwnck/libwnck.h>
-#include <gconf/gconf-client.h>
#include "workspace-switcher.h"
#include "wncklet.h"
-/* even 16 is pretty darn dubious. */
-#define MAX_REASONABLE_ROWS 16
-#define DEFAULT_ROWS 1
-
#define NEVER_SENSITIVE "never_sensitive"
-#define NUM_WORKSPACES "/apps/metacity/general/num_workspaces"
-#define WORKSPACE_NAME "/apps/metacity/workspace_names/name_1"
#define WORKSPACE_SWITCHER_ICON "gnome-panel-workspace-switcher"
@@ -71,8 +63,7 @@ typedef struct {
WnckPagerDisplayMode display_mode;
gboolean display_all;
- /* gconf listeners id */
- guint listeners [3];
+ GSettings *settings;
} PagerData;
static void display_properties_dialog (GtkAction *action,
@@ -215,17 +206,7 @@ applet_change_background (PanelApplet *applet,
static void
destroy_pager(GtkWidget * widget, PagerData *pager)
{
- GConfClient *client = gconf_client_get_default ();
-
- gconf_client_notify_remove (client, pager->listeners[0]);
- gconf_client_notify_remove (client, pager->listeners[1]);
- gconf_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 (G_OBJECT (pager->settings));
if (pager->properties_dialog)
gtk_widget_destroy (pager->properties_dialog);
@@ -240,19 +221,13 @@ static const GtkActionEntry pager_menu_actions [] = {
};
static void
-num_rows_changed (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
+num_rows_changed (GSettings *settings,
+ const gchar *key,
PagerData *pager)
{
- int n_rows = DEFAULT_ROWS;
-
- if (entry->value != NULL &&
- entry->value->type == GCONF_VALUE_INT) {
- n_rows = gconf_value_get_int (entry->value);
- }
+ int n_rows;
- n_rows = CLAMP (n_rows, 1, MAX_REASONABLE_ROWS);
+ n_rows = g_settings_get_int (settings, key);
pager->n_rows = n_rows;
pager_update (pager);
@@ -263,17 +238,13 @@ num_rows_changed (GConfClient *client,
}
static void
-display_workspace_names_changed (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
+display_workspace_names_changed (GSettings *settings,
+ const gchar *key,
PagerData *pager)
{
- gboolean value = FALSE; /* Default value */
-
- if (entry->value != NULL &&
- entry->value->type == GCONF_VALUE_BOOL) {
- value = gconf_value_get_bool (entry->value);
- }
+ gboolean value;
+
+ value = g_settings_get_boolean (settings, key);
if (value) {
pager->display_mode = WNCK_PAGER_DISPLAY_NAME;
@@ -291,17 +262,13 @@ display_workspace_names_changed (GConfClient *client,
static void
-all_workspaces_changed (GConfClient *client,
- guint cnxn_id,
- GConfEntry *entry,
+all_workspaces_changed (GSettings *settings,
+ const gchar *key,
PagerData *pager)
{
- gboolean value = TRUE; /* Default value */
-
- if (entry->value != NULL &&
- entry->value->type == GCONF_VALUE_BOOL) {
- value = gconf_value_get_bool (entry->value);
- }
+ gboolean value;
+
+ value = g_settings_get_boolean (settings, key);
pager->display_all = value;
pager_update (pager);
@@ -322,41 +289,16 @@ all_workspaces_changed (GConfClient *client,
static void
setup_gconf (PagerData *pager)
{
- GConfClient *client;
- char *key;
-
- client = gconf_client_get_default ();
-
- key = panel_applet_gconf_get_full_key (PANEL_APPLET (pager->applet),
- "num_rows");
- pager->listeners[0] = gconf_client_notify_add(client, key,
- (GConfClientNotifyFunc)num_rows_changed,
- pager,
- NULL, NULL);
-
- g_free (key);
-
-
- key = panel_applet_gconf_get_full_key (PANEL_APPLET (pager->applet),
- "display_workspace_names");
- pager->listeners[1] = gconf_client_notify_add(client, key,
- (GConfClientNotifyFunc)display_workspace_names_changed,
- pager,
- NULL, NULL);
-
- g_free (key);
-
- key = panel_applet_gconf_get_full_key (PANEL_APPLET (pager->applet),
- "display_all_workspaces");
- pager->listeners[2] = gconf_client_notify_add(client, key,
- (GConfClientNotifyFunc)all_workspaces_changed,
- pager,
- NULL, NULL);
-
- g_free (key);
-
- g_object_unref (G_OBJECT (client));
-
+ pager->settings =
+ panel_applet_settings_new (PANEL_APPLET (pager->applet),
+ "org.gnome.gnome-panel.applet.workspace-switcher");
+
+ 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
@@ -366,7 +308,6 @@ workspace_switcher_applet_fill (PanelApplet *applet)
GtkActionGroup *action_group;
GtkAction *action;
gchar *ui_path;
- GError *error;
gboolean display_names;
panel_applet_add_preferences (applet, "/schemas/apps/workspace_switcher_applet/prefs", NULL);
@@ -379,25 +320,9 @@ workspace_switcher_applet_fill (PanelApplet *applet)
setup_gconf (pager);
- error = NULL;
- pager->n_rows = panel_applet_gconf_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 = panel_applet_gconf_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) {
pager->display_mode = WNCK_PAGER_DISPLAY_NAME;
@@ -405,14 +330,7 @@ workspace_switcher_applet_fill (PanelApplet *applet)
pager->display_mode = WNCK_PAGER_DISPLAY_CONTENT;
}
- error = NULL;
- pager->display_all = panel_applet_gconf_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 (panel_applet_get_orient (applet)) {
case PANEL_APPLET_ORIENT_LEFT:
@@ -485,30 +403,27 @@ static void
display_workspace_names_toggled (GtkToggleButton *button,
PagerData *pager)
{
- panel_applet_gconf_set_bool (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)
{
- panel_applet_gconf_set_bool (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)
{
- panel_applet_gconf_set_int (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
@@ -706,23 +621,11 @@ setup_sensitivity (PagerData *pager,
const char *wid3,
const char *key)
{
- PanelApplet *applet = PANEL_APPLET (pager->applet);
- GConfClient *client = gconf_client_get_default ();
- char *fullkey;
GtkWidget *w;
- if (key[0] == '/')
- fullkey = g_strdup (key);
- else
- fullkey = panel_applet_gconf_get_full_key (applet, key);
-
- if (gconf_client_key_is_writable (client, fullkey, NULL)) {
- g_object_unref (G_OBJECT (client));
- g_free (fullkey);
+ if (g_settings_is_writable (pager->settings, key)) {
return;
}
- g_object_unref (G_OBJECT (client));
- g_free (fullkey);
w = WID (wid1);
g_assert (w != NULL);
@@ -765,7 +668,7 @@ setup_dialog (GtkBuilder *builder,
"workspace_name_toggle",
NULL,
NULL,
- "display_workspace_names" /* key */);
+ "display-workspace-names" /* key */);
pager->all_workspaces_radio = WID ("all_workspaces_radio");
pager->current_only_radio = WID ("current_only_radio");
@@ -773,7 +676,7 @@ setup_dialog (GtkBuilder *builder,
"all_workspaces_radio",
"current_only_radio",
"label_row_col",
- "display_all_workspaces" /* key */);
+ "display-all-workspaces" /* key */);
pager->num_rows_spin = WID ("num_rows_spin");
pager->label_row_col = WID("label_row_col");
@@ -781,21 +684,10 @@ setup_dialog (GtkBuilder *builder,
"num_rows_spin",
NULL,
NULL,
- "num_rows" /* key */);
+ "num-rows" /* key */);
pager->num_workspaces_spin = WID ("num_workspaces_spin");
- setup_sensitivity (pager, builder,
- "num_workspaces_spin",
- NULL,
- NULL,
- NUM_WORKSPACES /* key */);
-
pager->workspaces_tree = WID ("workspaces_tree_view");
- setup_sensitivity (pager, builder,
- "workspaces_tree_view",
- NULL,
- NULL,
- WORKSPACE_NAME /* key */);
/* Display workspace names: */
diff --git a/data/org.gnome.gnome-panel.applet.workspace-switcher.gschema.xml b/data/org.gnome.gnome-panel.applet.workspace-switcher.gschema.xml
index a975e3e..2aa9cd7 100644
--- a/data/org.gnome.gnome-panel.applet.workspace-switcher.gschema.xml
+++ b/data/org.gnome.gnome-panel.applet.workspace-switcher.gschema.xml
@@ -14,6 +14,7 @@
<default>1</default>
<summary>Rows in workspace switcher</summary>
<description>This key specifies how many rows (for horizontal layout) or columns (for vertical layout) the workspace switcher shows the workspaces in. This key is only relevant if the display_all_workspaces key is true.</description>
+ <range min='1' max='16'/>
</key>
</schema>
</schemalist>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]