[gnome-system-monitor/gtk3] BROKEN: In progess GConf to GSettings port



commit 9dcea45810fb70fd4307c3b21c574aece4afda0e
Author: Chris Kühl <chrisk openismus com>
Date:   Thu Feb 3 17:25:07 2011 +0100

    BROKEN: In progess GConf to GSettings port
    
    This currently has a problem writing to gsettings values.

 src/callbacks.cpp                                 |   23 +-
 src/disks.cpp                                     |    6 +-
 src/gconf-keys.cpp                                |    6 +-
 src/gnome-system-monitor.schemas.in               |   12 +
 src/interface.cpp                                 |    5 +-
 src/memmaps.cpp                                   |  154 +-------
 src/openfiles.cpp                                 |   10 +-
 src/org.gnome.gnome-system-monitor.gschema.xml.in |    8 +
 src/procdialogs.cpp                               |   61 ++--
 src/procman.cpp                                   |  417 ++++++++++-----------
 src/procman.h                                     |   14 +-
 src/proctable.cpp                                 |    5 +-
 src/smooth_refresh.cpp                            |   45 +--
 src/smooth_refresh.h                              |   15 +-
 14 files changed, 303 insertions(+), 478 deletions(-)
---
diff --git a/src/callbacks.cpp b/src/callbacks.cpp
index b0ac269..91c7d81 100644
--- a/src/callbacks.cpp
+++ b/src/callbacks.cpp
@@ -217,7 +217,7 @@ cb_end_process_button_pressed (GtkButton *button, gpointer data)
 }
 
 
-static void change_gconf_color(GConfClient *client, const char *key,
+static void change_settings_color(GSettings *settings, const char *key,
 			       GSMColorButton *cp)
 {
 	GdkColor c;
@@ -225,27 +225,26 @@ static void change_gconf_color(GConfClient *client, const char *key,
 
 	gsm_color_button_get_color(cp, &c);
 	g_snprintf(color, sizeof color, "#%04x%04x%04x", c.red, c.green, c.blue);
-	gconf_client_set_string (client, key, color, NULL);
+	g_settings_set_string (settings, key, color);
 }
 
-
 void
 cb_cpu_color_changed (GSMColorButton *cp, gpointer data)
 {
 	char key[80];
 	gint i = GPOINTER_TO_INT (data);
-	GConfClient *client = gconf_client_get_default ();
+	GSettings *settings = g_settings_new (GSM_GSETTINGS_SCHEMA);
 
-	g_snprintf(key, sizeof key, "/apps/procman/cpu_color%d", i);
+	g_snprintf(key, sizeof key, "cpu_color%d", i);
 
-	change_gconf_color(client, key, cp);
+	change_settings_color(settings, key, cp);
 }
 
 void
 cb_mem_color_changed (GSMColorButton *cp, gpointer data)
 {
 	ProcData * const procdata = static_cast<ProcData*>(data);
-	change_gconf_color(procdata->client, "/apps/procman/mem_color", cp);
+	change_settings_color(procdata->settings, "mem_color", cp);
 }
 
 
@@ -253,21 +252,21 @@ void
 cb_swap_color_changed (GSMColorButton *cp, gpointer data)
 {
 	ProcData * const procdata = static_cast<ProcData*>(data);
-	change_gconf_color(procdata->client, "/apps/procman/swap_color", cp);
+	change_settings_color(procdata->settings, "swap_color", cp);
 }
 
 void
 cb_net_in_color_changed (GSMColorButton *cp, gpointer data)
 {
 	ProcData * const procdata = static_cast<ProcData*>(data);
-	change_gconf_color(procdata->client, "/apps/procman/net_in_color", cp);
+	change_settings_color(procdata->settings, "net_in_color", cp);
 }
 
 void
 cb_net_out_color_changed (GSMColorButton *cp, gpointer data)
 {
 	ProcData * const procdata = static_cast<ProcData*>(data);
-	change_gconf_color(procdata->client, "/apps/procman/net_out_color", cp);
+	change_settings_color(procdata->settings, "net_out_color", cp);
 }
 
 static void
@@ -431,6 +430,6 @@ cb_radio_processes(GtkAction *action, GtkRadioAction *current, gpointer data)
 
 	procdata->config.whose_process = gtk_radio_action_get_current_value(current);
 
-	gconf_client_set_int (procdata->client, "/apps/procman/view_as",
-			      procdata->config.whose_process, NULL);
+	g_settings_set_int (procdata->settings, "view_as",
+			      procdata->config.whose_process);
 }
diff --git a/src/disks.cpp b/src/disks.cpp
index c694c0a..18a6b6b 100644
--- a/src/disks.cpp
+++ b/src/disks.cpp
@@ -245,7 +245,7 @@ cb_disk_columns_changed(GtkTreeView *treeview, gpointer user_data)
 {
 	ProcData * const procdata = static_cast<ProcData*>(user_data);
 
-	procman_save_tree_state(procdata->client,
+	procman_save_tree_state(procdata->settings,
 				GTK_WIDGET(treeview),
 				"/apps/procman/disktreenew");
 }
@@ -411,8 +411,8 @@ create_disk_view(ProcData *procdata)
 
 	gtk_widget_show_all(disk_box);
 
-	procman_get_tree_state(procdata->client, disk_tree,
-			       "/apps/procman/disktreenew");
+	procman_get_tree_state(procdata->settings, disk_tree,
+			       "disktreenew");
 
 	g_signal_connect (G_OBJECT(disk_tree), "columns-changed", 
 	                  G_CALLBACK(cb_disk_columns_changed), procdata);
diff --git a/src/gconf-keys.cpp b/src/gconf-keys.cpp
index b2581f3..69792a0 100644
--- a/src/gconf-keys.cpp
+++ b/src/gconf-keys.cpp
@@ -6,9 +6,9 @@ namespace procman
   namespace gconf
   {
     const std::string root("/apps/procman");
-    const std::string solaris_mode(root + "/solaris_mode");
-    const std::string open_files_tree_prefix(root + "/openfilestree");
-    const std::string network_in_bits(root + "/network_in_bits");
+    const std::string solaris_mode("solaris-mode");
+    const std::string open_files_tree_prefix("openfilestree");
+    const std::string network_in_bits("network-in-bits");
   }
 }
 
diff --git a/src/gnome-system-monitor.schemas.in b/src/gnome-system-monitor.schemas.in
index 4cc1d39..c256af9 100644
--- a/src/gnome-system-monitor.schemas.in
+++ b/src/gnome-system-monitor.schemas.in
@@ -243,6 +243,18 @@
       </schema>
 
       <schema>
+      <key>/schemas/apps/procman/network_in_bits</key>
+      <applyto>/apps/procman/network_in_bits</applyto>
+      <owner>procman</owner>
+      <type>bool</type>
+      <default>FALSE</default>
+      <locale name="C">
+        <short>Show network network traffic in bits</short>
+        <long></long>
+      </locale>
+      </schema>
+
+      <schema>
       <key>/schemas/apps/procman/proctree/sort_col</key>
       <applyto>/apps/procman/proctree/sort_col</applyto>
       <owner>procman</owner>
diff --git a/src/interface.cpp b/src/interface.cpp
index 81c4ae5..06335a6 100644
--- a/src/interface.cpp
+++ b/src/interface.cpp
@@ -797,12 +797,11 @@ static void
 cb_toggle_tree (GtkAction *action, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfClient *client = procdata->client;
-	gboolean show;
+	GSettings *settings = procdata->settings;	gboolean show;
 
 	show = gtk_toggle_action_get_active (GTK_TOGGLE_ACTION (action));
 	if (show == procdata->config.show_tree)
 		return;
 
-	gconf_client_set_bool (client, "/apps/procman/show_tree", show, NULL);
+	g_settings_set_boolean (settings, "show_tree", show);
 }
diff --git a/src/memmaps.cpp b/src/memmaps.cpp
index 0ba5061..bb68326 100644
--- a/src/memmaps.cpp
+++ b/src/memmaps.cpp
@@ -88,144 +88,6 @@ namespace
   };
 
 
-  void
-  procman_save_tree_state2(GConfClient *client, GtkWidget *tree, const gchar *cprefix)
-  {
-    const string prefix(cprefix);
-
-    GtkTreeModel *model;
-    gint sort_col;
-    GtkSortType order;
-
-    g_assert(tree);
-    g_assert(prefix != "");
-
-    model = gtk_tree_view_get_model(GTK_TREE_VIEW (tree));
-
-    if (gtk_tree_sortable_get_sort_column_id(GTK_TREE_SORTABLE(model), &sort_col, &order)) {
-      gconf_client_set_int(client, (prefix + "/sort_col").c_str(), sort_col, 0);
-      gconf_client_set_int(client, (prefix + "/sort_order").c_str(), order, 0);
-    }
-
-    GList * const columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(tree));
-
-    GSList *list = 0;
-
-    for (GList *it = columns; it; it = it->next)
-      {
-	GtkTreeViewColumn *column;
-	ColumnState cs;
-
-	column = static_cast<GtkTreeViewColumn*>(it->data);
-	cs.id = gtk_tree_view_column_get_sort_column_id(column);
-	cs.visible = gtk_tree_view_column_get_visible(column);
-	cs.width = gtk_tree_view_column_get_width(column);
-
-	list = g_slist_append(list, GINT_TO_POINTER(cs.pack()));
-      }
-
-    g_list_free(columns);
-
-    GError *error = 0;
-
-    if (not gconf_client_set_list(client, (prefix + "/columns").c_str(),
-				  GCONF_VALUE_INT, list,
-				  &error)) {
-      g_critical("Failed to save tree state %s : %s",
-		 prefix.c_str(),
-		 error->message);
-      g_error_free(error);
-    }
-
-    g_slist_free(list);
-  }
-
-
-  gboolean procman_get_tree_state2(GConfClient *client, GtkWidget *tree, const gchar *cprefix)
-  {
-    const string prefix(cprefix);
-    GtkTreeModel *model;
-
-    gint sort_col;
-    GtkSortType order;
-
-    g_assert(tree);
-    g_assert(prefix != "");
-
-    if (!gconf_client_dir_exists(client, prefix.c_str(), 0))
-      return FALSE;
-
-    model = gtk_tree_view_get_model(GTK_TREE_VIEW(tree));
-
-    sort_col = gconf_client_get_int(client, (prefix + "/sort_col").c_str(), 0);
-    sort_order = gconf_client_get_int(client, (prefix + "/sort_order").c_str(), 0);
-
-    if (sort_col != -1)
-      gtk_tree_sortable_set_sort_column_id(GTK_TREE_SORTABLE(model), sort_col, order);
-
-    proctable_set_columns_order(GTK_TREE_VIEW(tree), order);
-
-    GSlist *list = gconf_client_get_list(client, (prefix + "/columns").c_str(),
-					 GCONF_VALUE_INT, 0);
-
-
-    for (GSList *it = list; it; it = it->next) {
-      ColumnState cs;
-      cs.unpack(GPOINTER_TO_INT(it->data));
-
-      GtkTreeViewColumn *column;
-      column = gtk_tree_view_get_column(GTK_TREE_VIEW(tree), cs.id);
-
-      if (!column)
-	continue;
-
-      gtk_tree_view_column_set_visible(column, cs.visible);
-      if (cs.visible)
-	gtk_tree_view_column_set_fixed_width(column, MAX(10, cs.width));
-    }
-
-    g_slist_free(list);
-
-
-    GList * const columns = gtk_tree_view_get_columns(GTK_TREE_VIEW(tree));
-
-    for (GList * it = columns; it; it = it->next)
-      {
-	GtkTreeViewColumn *column = static_cast<GtkTreeViewColumn*>(it->data);
-	unsigned id = gtk_tree_view_column_get_sort_column_id(column);
-
-	ColumnState &cs(states[id]);
-
-
-
-	key = g_strdup_printf("%s/col_%d_width", prefix, id);
-	value = gconf_client_get (client, key, NULL);
-	g_free (key);
-
-	if (value != NULL) {
-	  width = gconf_value_get_int(value);
-	  gconf_value_free (value);
-
-	  key = g_strdup_printf ("%s/col_%d_visible", prefix, id);
-	  visible = gconf_client_get_bool (client, key, NULL);
-	  g_free (key);
-
-	  column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), id);
-	  if(!column) continue;
-	  gtk_tree_view_column_set_visible (column, visible);
-	  if (visible) {
-	    /* ensure column is really visible */
-	    width = MAX(width, 10);
-	    gtk_tree_view_column_set_fixed_width(column, width);
-	  }
-	}
-      }
-
-    g_list_free(columns);
-
-    return TRUE;
-  }
-
 
 
 #endif
@@ -293,23 +155,23 @@ namespace
   public:
     guint timer;
     GtkWidget *tree;
-    GConfClient *client;
+    GSettings *settings;
     ProcInfo *info;
     OffsetFormater format;
     mutable InodeDevices devices;
-    const char * const key;
+    const char * const schema;
 
-    MemMapsData(GtkWidget *a_tree, GConfClient *a_client)
+    MemMapsData(GtkWidget *a_tree, GSettings *a_settings)
       : tree(a_tree),
-	client(a_client),
-	key("/apps/procman/memmapstree2")
+	settings(a_settings),
+	schema("memmapstree")
     {
-      procman_get_tree_state(this->client, this->tree, this->key);
+        procman_get_tree_state(this->settings, this->tree, this->schema);
     }
 
     ~MemMapsData()
     {
-      procman_save_tree_state(this->client, this->tree, this->key);
+        procman_save_tree_state(this->settings, this->tree, this->schema);
     }
   };
 }
@@ -561,7 +423,7 @@ create_memmapsdata (ProcData *procdata)
 		}
 	}
 
-	return new MemMapsData(tree, procdata->client);
+	return new MemMapsData(tree, procdata->settings);
 }
 
 
diff --git a/src/openfiles.cpp b/src/openfiles.cpp
index c4ba2c8..d8c3621 100644
--- a/src/openfiles.cpp
+++ b/src/openfiles.cpp
@@ -215,11 +215,11 @@ static void
 close_openfiles_dialog (GtkDialog *dialog, gint id, gpointer data)
 {
 	GtkWidget *tree = static_cast<GtkWidget*>(data);
-	GConfClient *client;
+	GSettings *settings;
 	guint timer;
 
-	client = static_cast<GConfClient*>(g_object_get_data (G_OBJECT (tree), "client"));
-	procman_save_tree_state (client, tree, procman::gconf::open_files_tree_prefix.c_str());
+	settings = static_cast<GSettings*>(g_object_get_data (G_OBJECT (tree), "settings"));
+	procman_save_tree_state (settings, tree, procman::gconf::open_files_tree_prefix.c_str());
 
 	timer = GPOINTER_TO_UINT (g_object_get_data (G_OBJECT (tree), "timer"));
 	g_source_remove (timer);
@@ -288,7 +288,7 @@ create_openfiles_tree (ProcData *procdata)
   GTK_SORT_ASCENDING);*/
 #endif
 
-	procman_get_tree_state (procdata->client, tree, procman::gconf::open_files_tree_prefix.c_str());
+	// procman_get_tree_state (procdata->settings, tree, procman::gconf::open_files_tree_prefix.c_str());
 
 	return tree;
 
@@ -368,7 +368,7 @@ create_single_openfiles_dialog (GtkTreeModel *model, GtkTreePath *path,
 	tree = create_openfiles_tree (procdata);
 	gtk_container_add (GTK_CONTAINER (scrolled), tree);
 	g_object_set_data (G_OBJECT (tree), "selected_info", info);
-	g_object_set_data (G_OBJECT (tree), "client", procdata->client);
+	g_object_set_data (G_OBJECT (tree), "settings", procdata->settings);
 
 	gtk_box_pack_start (GTK_BOX (dialog_vbox), scrolled, TRUE, TRUE, 0);
 	gtk_widget_show_all (scrolled);
diff --git a/src/org.gnome.gnome-system-monitor.gschema.xml.in b/src/org.gnome.gnome-system-monitor.gschema.xml.in
index 2b3f823..c76584c 100644
--- a/src/org.gnome.gnome-system-monitor.gschema.xml.in
+++ b/src/org.gnome.gnome-system-monitor.gschema.xml.in
@@ -146,6 +146,14 @@
 	  <_summary>Default graph outgoing network traffic color
 	  </_summary>
 	</key>
+
+	<key name="network-in-bits" type="b">
+	  <default>false
+	  </default>
+	  <_summary>Show network network traffic in bits
+	  </_summary>
+	</key>
+
 	<child name="proctree" schema="org.gnome.gnome-system-monitor.proctree" />
 	<child name="disktreenew" schema="org.gnome.gnome-system-monitor.disktreenew" />
 	<child name="memmapstree" schema="org.gnome.gnome-system-monitor.memmapstree" />
diff --git a/src/procdialogs.cpp b/src/procdialogs.cpp
index 398e68f..411dcca 100644
--- a/src/procdialogs.cpp
+++ b/src/procdialogs.cpp
@@ -262,13 +262,13 @@ static void
 show_kill_dialog_toggled (GtkToggleButton *button, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfClient *client = procdata->client;
-	
+	GSettings *settings = procdata->settings;
+
 	gboolean toggled;
 	
 	toggled = gtk_toggle_button_get_active (button);
 	
-	gconf_client_set_bool (client, "/apps/procman/kill_dialog", toggled, NULL);
+	g_settings_set_boolean (settings, "/apps/procman/kill_dialog", toggled);
 		
 }
 
@@ -278,10 +278,11 @@ static void
 solaris_mode_toggled(GtkToggleButton *button, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfClient *client = procdata->client;
+	GSettings *settings = procdata->settings;
+
 	gboolean toggled;
 	toggled = gtk_toggle_button_get_active(button);
-	gconf_client_set_bool(client, procman::gconf::solaris_mode.c_str(), toggled, NULL);
+	g_settings_set_boolean(settings, procman::gconf::solaris_mode.c_str(), toggled);
 }
 
 
@@ -289,10 +290,11 @@ static void
 network_in_bits_toggled(GtkToggleButton *button, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfClient *client = procdata->client;
+	GSettings *settings = procdata->settings;
+
 	gboolean toggled;
 	toggled = gtk_toggle_button_get_active(button);
-	gconf_client_set_bool(client, procman::gconf::network_in_bits.c_str(), toggled, NULL);
+	g_settings_set_boolean(settings, procman::gconf::network_in_bits.c_str(), toggled);
 }
 
 
@@ -301,13 +303,13 @@ static void
 smooth_refresh_toggled(GtkToggleButton *button, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfClient *client = procdata->client;
-
+	GSettings *settings = procdata->settings;
+	
 	gboolean toggled;
 
 	toggled = gtk_toggle_button_get_active(button);
 
-	gconf_client_set_bool(client, SmoothRefresh::KEY.c_str(), toggled, NULL);
+	g_settings_set_boolean(settings, SmoothRefresh::KEY.c_str(), toggled);
 }
 
 
@@ -316,21 +318,21 @@ static void
 show_all_fs_toggled (GtkToggleButton *button, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfClient *client = procdata->client;
-
+	GSettings *settings = procdata->settings;
+	
 	gboolean toggled;
 
 	toggled = gtk_toggle_button_get_active (button);
 
-	gconf_client_set_bool (client, "/apps/procman/show_all_fs", toggled, NULL);
+	g_settings_set_boolean (settings, "show_all_fs", toggled);
 }
 
 
 class SpinButtonUpdater
 {
 public:
-  SpinButtonUpdater(const string& gconf_key)
-    : gconf_key(gconf_key)
+  SpinButtonUpdater(const string& key)
+    : key(key)
   { }
 
   static gboolean callback(GtkWidget *widget, GdkEventFocus *event, gpointer data)
@@ -345,20 +347,14 @@ private:
   void update(GtkSpinButton* spin)
   {
     int new_value = int(1000 * gtk_spin_button_get_value(spin));
-    GError* e = 0;
 
-    if (not gconf_client_set_int(ProcData::get_instance()->client,
-				 this->gconf_key.c_str(), new_value,
-				 &e)) {
-      g_warning("Failed to gconf_client_set_int %s %d : %s\n",
-		this->gconf_key.c_str(), new_value, e->message);
-      g_error_free(e);
-    }
+    g_settings_set_int(ProcData::get_instance()->settings,
+                       this->key.c_str(), new_value);
 
-    procman_debug("set %s to %d", this->gconf_key.c_str(), new_value);
+    procman_debug("set %s to %d", this->key.c_str(), new_value);
   }
 
-  const string gconf_key;
+  const string key;
 };
 
 
@@ -575,9 +571,8 @@ procdialog_create_preferences_dialog (ProcData *procdata)
 
 	smooth_button = gtk_check_button_new_with_mnemonic(_("Enable _smooth refresh"));
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(smooth_button),
-				     gconf_client_get_bool(procdata->client,
-							   SmoothRefresh::KEY.c_str(),
-							   NULL));
+				     g_settings_get_boolean(procdata->settings,
+							   SmoothRefresh::KEY.c_str()));
 	g_signal_connect(G_OBJECT(smooth_button), "toggled",
 			 G_CALLBACK(smooth_refresh_toggled), procdata);
 	gtk_box_pack_start(GTK_BOX(hbox2), smooth_button, TRUE, TRUE, 0);
@@ -603,9 +598,8 @@ procdialog_create_preferences_dialog (ProcData *procdata)
 	GtkWidget *solaris_button;
 	solaris_button = gtk_check_button_new_with_mnemonic(_("Solaris mode"));
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(solaris_button),
-				     gconf_client_get_bool(procdata->client,
-							   procman::gconf::solaris_mode.c_str(),
-							   NULL));
+				     g_settings_get_boolean(procdata->settings,
+							   procman::gconf::solaris_mode.c_str()));
 	g_signal_connect(G_OBJECT(solaris_button), "toggled",
 			 G_CALLBACK(solaris_mode_toggled), procdata);
 	gtk_box_pack_start(GTK_BOX(hbox2), solaris_button, TRUE, TRUE, 0);
@@ -685,9 +679,8 @@ procdialog_create_preferences_dialog (ProcData *procdata)
 	GtkWidget *bits_button;
 	bits_button = gtk_check_button_new_with_mnemonic(_("Show network speed in bits"));
 	gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(bits_button),
-				     gconf_client_get_bool(procdata->client,
-							   procman::gconf::network_in_bits.c_str(),
-							   NULL));
+				     g_settings_get_boolean(procdata->settings,
+							   procman::gconf::network_in_bits.c_str()));
 	g_signal_connect(G_OBJECT(bits_button), "toggled",
 			 G_CALLBACK(network_in_bits_toggled), procdata);
 	gtk_box_pack_start(GTK_BOX(vbox2), bits_button, TRUE, TRUE, 0);
diff --git a/src/procman.cpp b/src/procman.cpp
index 37da316..9524527 100644
--- a/src/procman.cpp
+++ b/src/procman.cpp
@@ -31,7 +31,6 @@
 #include <gtk/gtk.h>
 #include <gdk/gdkx.h>
 #include <bacon-message-connection.h>
-#include <gconf/gconf-client.h>
 #include <glibtop.h>
 #include <glibtop/close.h>
 #include <glibtop/loadavg.h>
@@ -69,80 +68,68 @@ ProcData* ProcData::get_instance()
 
 
 static void
-tree_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer data)
+tree_changed_cb (GSettings *settings, const gchar *key, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfValue *value = gconf_entry_get_value (entry);
-	
-	procdata->config.show_tree = gconf_value_get_bool (value);
+
+	procdata->config.show_tree = g_settings_get_boolean(settings, key);
 
 	g_object_set(G_OBJECT(procdata->tree),
 		     "show-expanders", procdata->config.show_tree,
 		     NULL);
 
 	proctable_clear_tree (procdata);
-
 	proctable_update_all (procdata);
 }
 
 static void
-solaris_mode_changed_cb(GConfClient *client, guint id, GConfEntry *entry, gpointer data)
+solaris_mode_changed_cb(GSettings *settings, const gchar *key, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfValue *value = gconf_entry_get_value (entry);
 
-	procdata->config.solaris_mode = gconf_value_get_bool(value);
+	procdata->config.solaris_mode = g_settings_get_boolean(settings, key);
 	proctable_update_all (procdata);
 }
 
 
 static void
-network_in_bits_changed_cb(GConfClient *client, guint id, GConfEntry *entry, gpointer data)
+network_in_bits_changed_cb(GSettings *settings, const gchar *key, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfValue *value = gconf_entry_get_value (entry);
 
-	procdata->config.network_in_bits = gconf_value_get_bool(value);
+	procdata->config.network_in_bits = g_settings_get_boolean(settings, key);
 	// force scale to be redrawn
 	procdata->net_graph->clear_background();
 }
 
-
-
 static void
-view_as_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer data)
+view_as_changed_cb (GSettings *settings, const gchar *key, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	GConfValue *value = gconf_entry_get_value (entry);
-	
-	procdata->config.whose_process = gconf_value_get_int (value);
+
+	procdata->config.whose_process = g_settings_get_int (settings, key);
 	procdata->config.whose_process = CLAMP (procdata->config.whose_process, 0, 2);
 	proctable_clear_tree (procdata);
-	proctable_update_all (procdata);
-	
+	proctable_update_all (procdata);	
 }
 
 static void
-warning_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer data)
+warning_changed_cb (GSettings *settings, const gchar *key, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	const gchar *key = gconf_entry_get_key (entry);
-	GConfValue *value = gconf_entry_get_value (entry);
-	
-	if (g_str_equal (key, "/apps/procman/kill_dialog")) {
-		procdata->config.show_kill_warning = gconf_value_get_bool (value);
+
+	if (g_str_equal (key, "kill-dialog")) {
+	   procdata->config.show_kill_warning = g_settings_get_boolean (settings, key);
 	}
 }
 
 static void
-timeouts_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer data)
+timeouts_changed_cb (GSettings *settings, const gchar *key, gpointer data)
 {
 	ProcData *procdata = static_cast<ProcData*>(data);
-	const gchar *key = gconf_entry_get_key (entry);
-	GConfValue *value = gconf_entry_get_value (entry);
 
-	if (g_str_equal (key, "/apps/procman/update_interval")) {
-		procdata->config.update_interval = gconf_value_get_int (value);
+	if (g_str_equal (key, "update-interval")) {
+		procdata->config.update_interval = g_settings_get_int (settings, key);
 		procdata->config.update_interval = 
 			MAX (procdata->config.update_interval, 1000);
 
@@ -155,8 +142,8 @@ timeouts_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer
 							   procdata);
 		}
 	}
-	else if (g_str_equal (key, "/apps/procman/graph_update_interval")){
-		procdata->config.graph_update_interval = gconf_value_get_int (value);
+	else if (g_str_equal (key, "graph-update-interval")){
+		procdata->config.graph_update_interval = g_settings_get_int (settings, key);
 		procdata->config.graph_update_interval = 
 			MAX (procdata->config.graph_update_interval, 
 			     250);
@@ -167,9 +154,9 @@ timeouts_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer
 		load_graph_change_speed(procdata->net_graph,
 					procdata->config.graph_update_interval);
 	}
-	else if (g_str_equal(key, "/apps/procman/disks_interval")) {
+	else if (g_str_equal(key, "disks-interval")) {
 		
-		procdata->config.disks_update_interval = gconf_value_get_int (value);
+		procdata->config.disks_update_interval = g_settings_get_int (settings, key);
 		procdata->config.disks_update_interval = 
 			MAX (procdata->config.disks_update_interval, 1000);	
 
@@ -187,16 +174,14 @@ timeouts_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer
 }
 
 static void
-color_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer data)
+color_changed_cb (GSettings *settings, const gchar *key, gpointer data)
 {
 	ProcData * const procdata = static_cast<ProcData*>(data);
-	const gchar *key = gconf_entry_get_key (entry);
-	GConfValue *value = gconf_entry_get_value (entry);
-	const gchar *color = gconf_value_get_string (value);
+	const gchar *color = g_settings_get_string (settings, key);
 
-	if (g_str_has_prefix (key, "/apps/procman/cpu_color")) {
-		for (int i = 0; i < GLIBTOP_NCPU; i++) {
-			string cpu_key = make_string(g_strdup_printf("/apps/procman/cpu_color%d", i));
+	if (g_str_has_prefix (key, "cpu-color")) {
+		for (int i = 0; i < procdata->config.num_cpus; i++) {
+			string cpu_key = make_string(g_strdup_printf("cpu-color%d", i));
 			if (cpu_key == key) {
 				gdk_color_parse (color, &procdata->config.cpu_color[i]);
 				procdata->cpu_graph->colors.at(i) = procdata->config.cpu_color[i];
@@ -204,19 +189,19 @@ color_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer dat
 			}
 		}
 	}
-	else if (g_str_equal (key, "/apps/procman/mem_color")) {
+	else if (g_str_equal (key, "mem-color")) {
 		gdk_color_parse (color, &procdata->config.mem_color);
 		procdata->mem_graph->colors.at(0) = procdata->config.mem_color;
 	}
-	else if (g_str_equal (key, "/apps/procman/swap_color")) {
+	else if (g_str_equal (key, "swap-color")) {
 		gdk_color_parse (color, &procdata->config.swap_color);
 		procdata->mem_graph->colors.at(1) = procdata->config.swap_color;
 	}
-	else if (g_str_equal (key, "/apps/procman/net_in_color")) {
+	else if (g_str_equal (key, "net-in-color")) {
 		gdk_color_parse (color, &procdata->config.net_in_color);
 		procdata->net_graph->colors.at(0) = procdata->config.net_in_color;
 	}
-	else if (g_str_equal (key, "/apps/procman/net_out_color")) {
+	else if (g_str_equal (key, "net-out-color")) {
 		gdk_color_parse (color, &procdata->config.net_out_color);
 		procdata->net_graph->colors.at(1) = procdata->config.net_out_color;
 	}
@@ -225,24 +210,19 @@ color_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer dat
 	}
 }
 
-
-
 static void
-show_all_fs_changed_cb (GConfClient *client, guint id, GConfEntry *entry, gpointer data)
+show_all_fs_changed_cb (GSettings *settings, const gchar *key, gpointer data)
 {
 	ProcData * const procdata = static_cast<ProcData*>(data);
-	GConfValue *value = gconf_entry_get_value (entry);
 
-	procdata->config.show_all_fs = gconf_value_get_bool (value);
+	procdata->config.show_all_fs = g_settings_get_boolean (settings, key);
 
 	cb_update_disks (data);
 }
 
-
 static ProcData *
-procman_data_new (GConfClient *client)
+procman_data_new (GSettings *settings)
 {
-
 	ProcData *pd;
 	gchar *color;
 	gint swidth, sheight;
@@ -251,96 +231,97 @@ procman_data_new (GConfClient *client)
 
 	pd = ProcData::get_instance();
 
-	pd->config.width = gconf_client_get_int (client, "/apps/procman/width", NULL);
-	pd->config.height = gconf_client_get_int (client, "/apps/procman/height", NULL);
-	pd->config.show_tree = gconf_client_get_bool (client, "/apps/procman/show_tree", NULL);
-	gconf_client_notify_add (client, "/apps/procman/show_tree", tree_changed_cb,
-				 pd, NULL, NULL);
-
-	pd->config.solaris_mode = gconf_client_get_bool(client, procman::gconf::solaris_mode.c_str(), NULL);
-	gconf_client_notify_add(client, procman::gconf::solaris_mode.c_str(), solaris_mode_changed_cb, pd, NULL, NULL);
-
-	pd->config.network_in_bits = gconf_client_get_bool(client, procman::gconf::network_in_bits.c_str(), NULL);
-	gconf_client_notify_add(client, procman::gconf::network_in_bits.c_str(), network_in_bits_changed_cb, pd, NULL, NULL);
-
-
-	pd->config.show_kill_warning = gconf_client_get_bool (client, "/apps/procman/kill_dialog", 
-							      NULL);
-	gconf_client_notify_add (client, "/apps/procman/kill_dialog", warning_changed_cb,
-				 pd, NULL, NULL);
-	pd->config.update_interval = gconf_client_get_int (client, "/apps/procman/update_interval", 
-							   NULL);
-	gconf_client_notify_add (client, "/apps/procman/update_interval", timeouts_changed_cb,
-				 pd, NULL, NULL);
-	pd->config.graph_update_interval = gconf_client_get_int (client,
-						"/apps/procman/graph_update_interval",
-						NULL);
-	gconf_client_notify_add (client, "/apps/procman/graph_update_interval", timeouts_changed_cb,
-				 pd, NULL, NULL);
-	pd->config.disks_update_interval = gconf_client_get_int (client,
-								 "/apps/procman/disks_interval",
-								 NULL);
-	gconf_client_notify_add (client, "/apps/procman/disks_interval", timeouts_changed_cb,
-				 pd, NULL, NULL);
-
-
-	/* /apps/procman/show_all_fs */
-	pd->config.show_all_fs = gconf_client_get_bool (
-		client, "/apps/procman/show_all_fs",
-		NULL);
-	gconf_client_notify_add
-		(client, "/apps/procman/show_all_fs",
-		 show_all_fs_changed_cb, pd, NULL, NULL);
-
-
-	pd->config.whose_process = gconf_client_get_int (client, "/apps/procman/view_as", NULL);
-	gconf_client_notify_add (client, "/apps/procman/view_as", view_as_changed_cb,
-				 pd, NULL, NULL);
-	pd->config.current_tab = gconf_client_get_int (client, "/apps/procman/current_tab", NULL);
-
-	for (int i = 0; i < GLIBTOP_NCPU; i++) {
+	pd->config.width = g_settings_get_int (settings, "width");
+	pd->config.height = g_settings_get_int (settings, "height");
+	pd->config.show_tree = g_settings_get_boolean (settings, "show-tree");
+	g_signal_connect (G_OBJECT(settings), "changed::show-tree", G_CALLBACK(tree_changed_cb), pd);
+
+	pd->config.solaris_mode = g_settings_get_boolean(settings, procman::gconf::solaris_mode.c_str());
+        std::string detail_string("changed::" + procman::gconf::solaris_mode);
+	g_signal_connect(G_OBJECT(settings), detail_string.c_str(), G_CALLBACK(solaris_mode_changed_cb), pd);
+
+	pd->config.network_in_bits = g_settings_get_boolean(settings, procman::gconf::network_in_bits.c_str());
+        detail_string = "changed::" + procman::gconf::network_in_bits;
+        g_signal_connect(G_OBJECT(settings), detail_string.c_str(), G_CALLBACK(network_in_bits_changed_cb), pd);
+
+	pd->config.show_kill_warning = g_settings_get_boolean (settings, "kill-dialog");
+	g_signal_connect (G_OBJECT(settings), "changed::kill-dialog", G_CALLBACK(warning_changed_cb), pd);
+	pd->config.update_interval = g_settings_get_int (settings, "update-interval");
+	g_signal_connect (G_OBJECT(settings), "changed::update-interval", G_CALLBACK(timeouts_changed_cb), pd);
+	pd->config.graph_update_interval = g_settings_get_int (settings,
+						"graph-update-interval");
+	g_signal_connect (G_OBJECT(settings), "changed::graph-update-interval",
+                          G_CALLBACK(timeouts_changed_cb), pd);
+	pd->config.disks_update_interval = g_settings_get_int (settings, "disks-interval");
+	g_signal_connect (G_OBJECT(settings), "changed::disks-interval", G_CALLBACK(timeouts_changed_cb), pd);
+
+
+	/* show_all_fs */
+	pd->config.show_all_fs = g_settings_get_boolean (settings, "show-all-fs");
+	g_signal_connect (settings, "changed::show-all-fs", G_CALLBACK(show_all_fs_changed_cb), pd);
+
+
+	pd->config.whose_process = g_settings_get_int (settings, "view-as");
+	g_signal_connect (G_OBJECT(settings), "changed::view-as", G_CALLBACK(view_as_changed_cb),pd);
+	pd->config.current_tab = g_settings_get_int (settings, "current-tab");
+
+	/* Determinie number of cpus since libgtop doesn't really tell you*/
+	pd->config.num_cpus = 0;
+	glibtop_get_cpu (&cpu);
+	pd->frequency = cpu.frequency;
+	i=0;
+    	while (i < GLIBTOP_NCPU && cpu.xcpu_total[i] != 0) {
+    	    pd->config.num_cpus ++;
+    	    i++;
+    	}
+    	if (pd->config.num_cpus == 0)
+    		pd->config.num_cpus = 1;
+        
+	for (int i = 0; i < pd->config.num_cpus; i++) {
 		gchar *key;
-		key = g_strdup_printf ("/apps/procman/cpu_color%d", i);
-		
-		color = gconf_client_get_string (client, key, NULL);
+		key = g_strdup_printf ("cpu-color%d", i);
+
+		color = g_settings_get_string (settings, key);
 		if (!color)
 			color = g_strdup ("#f25915e815e8");
-		gconf_client_notify_add (client, key, 
-			  	 color_changed_cb, pd, NULL, NULL);
+                
+                detail_string = std::string("changed::") + std::string(key);
+		g_signal_connect (G_OBJECT(settings), detail_string.c_str(),
+                                  G_CALLBACK(color_changed_cb), pd);
 		gdk_color_parse(color, &pd->config.cpu_color[i]);
 		g_free (color);
 		g_free (key);
 	}
-	color = gconf_client_get_string (client, "/apps/procman/mem_color", NULL);
+	color = g_settings_get_string (settings, "mem-color");
 	if (!color)
 		color = g_strdup ("#000000ff0082");
-	gconf_client_notify_add (client, "/apps/procman/mem_color", 
-			  	 color_changed_cb, pd, NULL, NULL);
+	g_signal_connect (G_OBJECT(settings), "changed::mem-color",
+                          G_CALLBACK(color_changed_cb), pd);
 	gdk_color_parse(color, &pd->config.mem_color);
 	
 	g_free (color);
 	
-	color = gconf_client_get_string (client, "/apps/procman/swap_color", NULL);
+	color = g_settings_get_string (settings, "swap-color");
 	if (!color)
 		color = g_strdup ("#00b6000000ff");
-	gconf_client_notify_add (client, "/apps/procman/swap_color", 
-			  	 color_changed_cb, pd, NULL, NULL);
+	g_signal_connect (G_OBJECT(settings), "changed::swap-color",
+                          G_CALLBACK(color_changed_cb), pd);
 	gdk_color_parse(color, &pd->config.swap_color);
 	g_free (color);
 
-	color = gconf_client_get_string (client, "/apps/procman/net_in_color", NULL);
+	color = g_settings_get_string (settings, "net-in-color");
 	if (!color)
 		color = g_strdup ("#000000f200f2");
-	gconf_client_notify_add (client, "/apps/procman/net_in_color",
-			  	 color_changed_cb, pd, NULL, NULL);
+	g_signal_connect (G_OBJECT(settings), "changed::net-in-color",
+                          G_CALLBACK(color_changed_cb), pd);
 	gdk_color_parse(color, &pd->config.net_in_color);
 	g_free (color);
 
-	color = gconf_client_get_string (client, "/apps/procman/net_out_color", NULL);
+	color = g_settings_get_string (settings, "net-out-color");
 	if (!color)
 		color = g_strdup ("#00f2000000c1");
-	gconf_client_notify_add (client, "/apps/procman/net_out_color",
-			  	 color_changed_cb, pd, NULL, NULL);
+	g_signal_connect (G_OBJECT(settings), "changed::net-out-color",
+                          G_CALLBACK(color_changed_cb), pd);
 	gdk_color_parse(color, &pd->config.net_out_color);
 	g_free (color);
 	
@@ -356,22 +337,10 @@ procman_data_new (GConfClient *client)
 	pd->config.current_tab = CLAMP(pd->config.current_tab,
 				       PROCMAN_TAB_SYSINFO,
 				       PROCMAN_TAB_DISKS);
-	
-	/* Determinie number of cpus since libgtop doesn't really tell you*/
-	pd->config.num_cpus = 0;
-	glibtop_get_cpu (&cpu);
-	pd->frequency = cpu.frequency;
-	i=0;
-    	while (i < GLIBTOP_NCPU && cpu.xcpu_total[i] != 0) {
-    	    pd->config.num_cpus ++;
-    	    i++;
-    	}
-    	if (pd->config.num_cpus == 0)
-    		pd->config.num_cpus = 1;
 
 	// delayed initialization as SmoothRefresh() needs ProcData
 	// i.e. we can't call ProcData::get_instance
-	pd->smooth_refresh = new SmoothRefresh();
+	pd->smooth_refresh = new SmoothRefresh(settings);
 
 	return pd;
 
@@ -387,30 +356,23 @@ procman_free_data (ProcData *procdata)
 
 
 gboolean
-procman_get_tree_state (GConfClient *client, GtkWidget *tree, const gchar *prefix)
+procman_get_tree_state (GSettings *settings, GtkWidget *tree, const gchar *child_scheme)
 {
 	GtkTreeModel *model;
 	GList *columns, *it;
 	gint sort_col;
 	GtkSortType order;
-	gchar *key;
-	
+        
+	GSettings *pt_settings = g_settings_get_child (settings, child_scheme);
 
 	g_assert(tree);
-	g_assert(prefix);
-	
-	if (!gconf_client_dir_exists (client, prefix, NULL)) 
-		return FALSE;
-	
+	g_assert(child_scheme);
+
 	model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree));
 	
-	key = g_strdup_printf ("%s/sort_col", prefix);
-	sort_col = gconf_client_get_int (client, key, NULL);
-	g_free (key);
+	sort_col = g_settings_get_int (pt_settings, "sort-col");
 	
-	key = g_strdup_printf ("%s/sort_order", prefix);
-	order = static_cast<GtkSortType>(gconf_client_get_int (client, key, NULL));
-	g_free (key);
+	order = static_cast<GtkSortType>(g_settings_get_int (pt_settings, "sort-order"));
 	
 	if (sort_col != -1)
 		gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (model),
@@ -419,60 +381,68 @@ procman_get_tree_state (GConfClient *client, GtkWidget *tree, const gchar *prefi
 
 	columns = gtk_tree_view_get_columns (GTK_TREE_VIEW (tree));
 
-	for(it = columns; it; it = it->next)
-	{
+	if(!g_strcmp0(child_scheme, "proctree"))
+        {
+            for(it = columns; it; it = it->next)
+            {
 		GtkTreeViewColumn *column;
-		GConfValue *value = NULL;
 		gint width;
 		gboolean visible;
 		int id;
+                gchar *key;
 
 		column = static_cast<GtkTreeViewColumn*>(it->data);
 		id = gtk_tree_view_column_get_sort_column_id (column);
 
-		key = g_strdup_printf ("%s/col_%d_width", prefix, id);
-		value = gconf_client_get (client, key, NULL);
+		key = g_strdup_printf ("col-%d-width", id);
+		g_settings_get (pt_settings, key, "i", &width);
 		g_free (key);
 
-		if (value != NULL) {
-			width = gconf_value_get_int(value);
-			gconf_value_free (value);
-
-			key = g_strdup_printf ("%s/col_%d_visible", prefix, id);
-			visible = gconf_client_get_bool (client, key, NULL);
-			g_free (key);
-
-			column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), id);
-			if(!column) continue;
-			gtk_tree_view_column_set_visible (column, visible);
-			if (visible) {
-				/* ensure column is really visible */
-				width = MAX(width, 10);
-				gtk_tree_view_column_set_fixed_width(column, width);
-			}
-		}
-	}
-
-	if(g_str_has_suffix(prefix, "proctree") || g_str_has_suffix(prefix, "disktreenew"))
+                key = g_strdup_printf ("col-%d-visible", id);
+                visible = g_settings_get_boolean (pt_settings, key);
+                g_free (key);
+
+                column = gtk_tree_view_get_column (GTK_TREE_VIEW (tree), id);
+                if(!column) continue;
+                gtk_tree_view_column_set_visible (column, visible);
+                if (visible) {
+                    /* ensure column is really visible */
+                    width = MAX(width, 10);
+                    gtk_tree_view_column_set_fixed_width(column, width);
+                }
+            }
+        }
+            
+	if(!g_strcmp0(child_scheme, "proctree") ||
+           !g_strcmp0(child_scheme, "disktreenew"))
 	{
-		GSList *order;
-		char *key;
+            GVariant     *value;
+            GVariantIter iter;
+            int   	 sortIndex;
 
-		key = g_strdup_printf("%s/columns_order", prefix);
-		order = gconf_client_get_list(client, key, GCONF_VALUE_INT, NULL);
-		proctable_set_columns_order(GTK_TREE_VIEW(tree), order);
+            GSList *order = NULL;
 
-		g_slist_free(order);
-		g_free(key);
+            value = g_settings_get_value(pt_settings, "columns-order");
+            g_variant_iter_init(&iter, value);
+
+            while (g_variant_iter_loop (&iter, "i", &sortIndex))		
+                order = g_slist_append(order, GINT_TO_POINTER(sortIndex));
+
+            proctable_set_columns_order(GTK_TREE_VIEW(tree), order);
+
+            g_slist_free(order);
 	}
 
+        g_object_unref(pt_settings);
+        pt_settings = NULL;
+
 	g_list_free(columns);
 	
 	return TRUE;
 }
 
 void
-procman_save_tree_state (GConfClient *client, GtkWidget *tree, const gchar *prefix)
+procman_save_tree_state (GSettings *settings, GtkWidget *tree, const gchar *child_schema)
 {
 	GtkTreeModel *model;
 	GList *it, *columns;
@@ -480,26 +450,21 @@ procman_save_tree_state (GConfClient *client, GtkWidget *tree, const gchar *pref
 	GtkSortType order;
 	
 	g_assert(tree);
-	g_assert(prefix);
+	g_assert(child_schema);
 	
 	model = gtk_tree_view_get_model (GTK_TREE_VIEW (tree));
 	if (gtk_tree_sortable_get_sort_column_id (GTK_TREE_SORTABLE (model), &sort_col,
 					          &order)) {
-		gchar *key;
-		
-		key = g_strdup_printf ("%s/sort_col", prefix);
-		gconf_client_set_int (client, key, sort_col, NULL);
-		g_free (key);
-		
-		key = g_strdup_printf ("%s/sort_order", prefix);
-		gconf_client_set_int (client, key, order, NULL);
-		g_free (key);
+		g_settings_set_int (settings, "sort-col", sort_col);		
+		g_settings_set_int (settings, "sort-order", order);
 	}			       
 	
 	columns = gtk_tree_view_get_columns (GTK_TREE_VIEW (tree));
 
-	for(it = columns; it; it = it->next)
-	{
+        if(!g_strcmp0(child_schema, "proctree"))
+        {
+            for(it = columns; it; it = it->next)
+            {
 		GtkTreeViewColumn *column;
 		gboolean visible;
 		gint width;
@@ -511,35 +476,35 @@ procman_save_tree_state (GConfClient *client, GtkWidget *tree, const gchar *pref
 		visible = gtk_tree_view_column_get_visible (column);
 		width = gtk_tree_view_column_get_width (column);
 
-		key = g_strdup_printf ("%s/col_%d_width", prefix, id);
-		gconf_client_set_int (client, key, width, NULL);
+		key = g_strdup_printf ("col-%d-width", id);
+		g_settings_set_int (settings, key, width);
 		g_free (key);
 
-		key = g_strdup_printf ("%s/col_%d_visible", prefix, id);
-		gconf_client_set_bool (client, key, visible, NULL);
+		key = g_strdup_printf ("col-%d-visible", id);
+		g_settings_set_boolean (settings, key, visible);
 		g_free (key);
-	}
-
-	if(g_str_has_suffix(prefix, "proctree") || g_str_has_suffix(prefix, "disktreenew"))
+            }
+        }
+            
+	if(!g_strcmp0(child_schema, "proctree") || !g_strcmp0(child_schema, "disktreenew"))
 	{
 		GSList *order;
-		char *key;
-		GError *error = NULL;
-
-		key = g_strdup_printf("%s/columns_order", prefix);
+		GVariantBuilder *builder;
+		GVariant *order_variant;
+	
 		order = proctable_get_columns_order(GTK_TREE_VIEW(tree));
 
-		if(!gconf_client_set_list(client, key, GCONF_VALUE_INT, order, &error))
-		{
-			g_critical("Could not save GConf key '%s' : %s",
-				   key,
-				   error->message);
-			g_error_free(error);
-		}
+		builder = g_variant_builder_new (G_VARIANT_TYPE_ARRAY);
+		
+		GSList *order_node;
+		for(order_node = order; order; order_node = order->next)
+			g_variant_builder_add(builder, "i", GPOINTER_TO_INT(order_node->data));
+		
+		order_variant = g_variant_new("ai", builder);
+		g_settings_set_value(settings, "columns-order", order_variant);
 
-		g_slist_free(order);
-		g_free(key);
-	}
+		g_slist_free(order);	
+}
 
 	g_list_free(columns);
 }
@@ -547,21 +512,21 @@ procman_save_tree_state (GConfClient *client, GtkWidget *tree, const gchar *pref
 void
 procman_save_config (ProcData *data)
 {
-	GConfClient *client = data->client;
+	GSettings *settings = data->settings;
 
 	g_assert(data);
 		
-	procman_save_tree_state (data->client, data->tree, "/apps/procman/proctree");
-	procman_save_tree_state (data->client, data->disk_list, "/apps/procman/disktreenew");
+	procman_save_tree_state (data->settings, data->tree, "proctree");
+	procman_save_tree_state (data->settings, data->disk_list, "disktreenew");
 
 	data->config.width  = gdk_window_get_width (gtk_widget_get_window (data->app));
 	data->config.height = gdk_window_get_height(gtk_widget_get_window (data->app));
 
-	gconf_client_set_int (client, "/apps/procman/width", data->config.width, NULL);
-	gconf_client_set_int (client, "/apps/procman/height", data->config.height, NULL);	
-	gconf_client_set_int (client, "/apps/procman/current_tab", data->config.current_tab, NULL);
+	g_settings_set_int (settings, "width", data->config.width);
+	g_settings_set_int (settings, "height", data->config.height);	
+	g_settings_set_int (settings, "current-tab", data->config.current_tab);
 
-	gconf_client_suggest_sync (client, NULL);
+	g_settings_sync ();
 }
 
 static guint32
@@ -574,7 +539,7 @@ get_startup_timestamp ()
 
 	/* we don't unset the env, since startup-notification
 	 * may still need it */
-	startup_id_env = g_getenv ("DESKTOP_STARTUP_ID");
+	startup_id_env = g_getenv ("DESKTOP-STARTUP-ID");
 	if (startup_id_env == NULL)
 		goto out;
 
@@ -662,12 +627,12 @@ int
 main (int argc, char *argv[])
 {
 	guint32 startup_timestamp;
-	GConfClient *client;
+	GSettings *settings;
 	ProcData *procdata;
 	BaconMessageConnection *conn;
 
 	// FIXME: Remove this when conversion to gsettings is done.
-	g_setenv ("GSETTINGS_BACKEND", "gconf", FALSE);
+//	g_setenv ("GSETTINGS_BACKEND", "gconf", FALSE);
 
 	bindtextdomain (GETTEXT_PACKAGE, GNOMELOCALEDIR);
 	bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8");
@@ -724,15 +689,15 @@ main (int argc, char *argv[])
 	gtk_window_set_default_icon_name ("utilities-system-monitor");
 	g_set_application_name(_("System Monitor"));
 
-	client = gconf_client_get_default ();
-	gconf_client_add_dir(client, "/apps/procman", GCONF_CLIENT_PRELOAD_NONE, NULL);
+	settings = g_settings_new (GSM_GSETTINGS_SCHEMA);
+	// gconf_client_add_dir(settings, "/apps/procman", GCONF_CLIENT_PRELOAD_NONE, NULL);
 
 	glibtop_init ();
 
 	procman_debug("end init");
 	
-	procdata = procman_data_new (client);
-	procdata->client = client;
+	procdata = procman_data_new (settings);
+	procdata->settings = g_settings_new(GSM_GSETTINGS_SCHEMA);
 
 	procman_debug("begin create_main_window");
 	create_main_window (procdata);
diff --git a/src/procman.h b/src/procman.h
index f9c708d..1c3585f 100644
--- a/src/procman.h
+++ b/src/procman.h
@@ -23,8 +23,8 @@
 #include <glibmm/refptr.h>
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <glib.h>
+#include <gio/gio.h>
 #include <gtk/gtk.h>
-#include <gconf/gconf-client.h>
 #include <glibtop/cpu.h>
 
 #include <time.h>
@@ -40,6 +40,8 @@ struct LoadGraph;
 #include "smooth_refresh.h"
 #include "prettytable.h"
 
+#define GSM_GSETTINGS_SCHEMA "org.gnome.gnome-system-monitor"
+
 enum
 {
 	ALL_PROCESSES,
@@ -72,8 +74,8 @@ struct ProcConfig
 {
 	gint		width;
 	gint		height;
-        gboolean	show_kill_warning;
-        gboolean	show_tree;
+	gboolean	show_kill_warning;
+	gboolean	show_tree;
 	gboolean	show_all_fs;
 	int		update_interval;
  	int		graph_update_interval;
@@ -206,7 +208,7 @@ struct ProcData
 
 	PrettyTable	pretty_table;
 
-	GConfClient	*client;
+	GSettings	*settings;
 	GtkWidget	*app;
 	GtkUIManager	*menu;
 
@@ -224,8 +226,8 @@ private:
 };
 
 void		procman_save_config (ProcData *data);
-void		procman_save_tree_state (GConfClient *client, GtkWidget *tree, const gchar *prefix);
-gboolean	procman_get_tree_state (GConfClient *client, GtkWidget *tree, const gchar *prefix);
+void		procman_save_tree_state (GSettings *settings, GtkWidget *tree, const gchar *prefix);
+gboolean	procman_get_tree_state (GSettings *settings, GtkWidget *tree, const gchar *prefix);
 
 
 
diff --git a/src/proctable.cpp b/src/proctable.cpp
index 7f192b2..8b6d238 100644
--- a/src/proctable.cpp
+++ b/src/proctable.cpp
@@ -53,7 +53,6 @@
 #include "interface.h"
 #include "selinux.h"
 
-
 ProcInfo::UserMap ProcInfo::users;
 ProcInfo::List ProcInfo::all;
 std::map<pid_t, guint64> ProcInfo::cpu_times;
@@ -90,7 +89,7 @@ cb_columns_changed(GtkTreeView *treeview, gpointer user_data)
 {
 	ProcData * const procdata = static_cast<ProcData*>(user_data);
 
-	procman_save_tree_state(procdata->client,
+	procman_save_tree_state(procdata->settings,
 				GTK_WIDGET(treeview),
 				"/apps/procman/proctree");
 }
@@ -392,7 +391,7 @@ proctable_new (ProcData * const procdata)
 
 	set_proctree_reorderable(procdata);
 
-	procman_get_tree_state (procdata->client, proctree, "/apps/procman/proctree");
+	procman_get_tree_state (procdata->settings, proctree, "proctree");
 
 	/* Override column settings by hiding this column if it's meaningless: */
 	if (!can_show_security_context_column ()) {
diff --git a/src/smooth_refresh.cpp b/src/smooth_refresh.cpp
index 5bab846..78ae890 100644
--- a/src/smooth_refresh.cpp
+++ b/src/smooth_refresh.cpp
@@ -4,7 +4,6 @@
 #include <unistd.h>
 
 #include <glib.h>
-#include <gconf/gconf-client.h>
 #include <glibtop.h>
 #include <glibtop/proctime.h>
 #include <glibtop/cpu.h>
@@ -16,8 +15,7 @@
 #include "util.h"
 
 
-const string SmoothRefresh::KEY("/apps/procman/smooth_refresh");
-const bool SmoothRefresh::KEY_DEFAULT_VALUE(true);
+const string SmoothRefresh::KEY("smooth-refresh");
 
 
 
@@ -46,43 +44,33 @@ unsigned SmoothRefresh::get_own_cpu_usage()
 
 
 
-void SmoothRefresh::status_changed(GConfClient *client,
-				   guint cnxn_id,
-				   GConfEntry *entry,
-				   gpointer user_data)
+void SmoothRefresh::status_changed(GSettings *settings,
+                                   const gchar *key,
+                                   gpointer user_data)
 {
-  static_cast<SmoothRefresh*>(user_data)->load_gconf_value(gconf_entry_get_value(entry));
+  static_cast<SmoothRefresh*>(user_data)->load_settings_value(key);
 }
 
-void SmoothRefresh::load_gconf_value(GConfValue* value)
+void SmoothRefresh::load_settings_value(const gchar *key)
 {
-  bool own_value = false;
-
-  if (not value) {
-    value = gconf_client_get(gconf_client_get_default(), KEY.c_str(), NULL);
-  }
-
-  this->active = value ? gconf_value_get_bool(value) : KEY_DEFAULT_VALUE;
+  this->active = g_settings_get_boolean(settings, key);
 
   if (this->active)
     procman_debug("smooth_refresh is enabled");
-
-  if (own_value and value)
-    gconf_value_free(value);
 }
 
 
-SmoothRefresh::SmoothRefresh()
+SmoothRefresh::SmoothRefresh(GSettings *a_settings)
+:
+    settings(a_settings)
 {
-  this->connection = gconf_client_notify_add(gconf_client_get_default(),
-					     KEY.c_str(),
-					     status_changed,
-					     this,
-					     NULL,
-					     NULL);
+  this->connection = g_signal_connect(G_OBJECT(settings),
+                                      "changed::smooth-refresh",
+                                      G_CALLBACK(status_changed),
+                                      this);
 
   this->reset();
-  this->load_gconf_value();
+  this->load_settings_value(KEY.c_str());
 }
 
 
@@ -106,8 +94,7 @@ void SmoothRefresh::reset()
 SmoothRefresh::~SmoothRefresh()
 {
   if (this->connection)
-    gconf_client_notify_remove(gconf_client_get_default(),
-			       this->connection);
+    g_signal_handler_disconnect(G_OBJECT(settings), this->connection);
 }
 
 
diff --git a/src/smooth_refresh.h b/src/smooth_refresh.h
index 673856a..8ba1680 100644
--- a/src/smooth_refresh.h
+++ b/src/smooth_refresh.h
@@ -2,8 +2,7 @@
 #define _PROCMAN_SMOOTH_REFRESH
 
 #include <glib.h>
-#include <gconf/gconf-client.h>
-
+#include <gio/gio.h>
 #include <string>
 
 using std::string;
@@ -22,7 +21,7 @@ public:
 
     @return : initialized SmoothRefresh
   */
-  SmoothRefresh();
+  SmoothRefresh(GSettings *a_settings);
 
   ~SmoothRefresh();
 
@@ -54,12 +53,11 @@ private:
 
   unsigned get_own_cpu_usage();
 
-  static void status_changed(GConfClient *client,
-			     guint cnxn_id,
-			     GConfEntry *entry,
-			     gpointer user_data);
+  static void status_changed(GSettings *settings,
+			     const gchar *key,
+                             gpointer user_data);
 
-  void load_gconf_value(GConfValue* value = NULL);
+  void load_settings_value(const gchar *key);
 
   /*
     fuzzy logic:
@@ -92,6 +90,7 @@ private:
     -last_cpu_time: Save last cpu and process times to compute CPU%
   */
 
+  GSettings *settings;
   bool active;
   guint connection;
   guint interval;



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]