[gnome-system-monitor] Use gsettings bindings in table state handling as much as possible
- From: Robert Roth <robertroth src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-system-monitor] Use gsettings bindings in table state handling as much as possible
- Date: Thu, 25 Jul 2013 00:10:42 +0000 (UTC)
commit 419c00943f2064eefe59511d912ed4a6e9146064
Author: Robert Roth <robert roth off gmail com>
Date: Thu Jul 25 03:10:08 2013 +0300
Use gsettings bindings in table state handling as much as possible
src/disks.cpp | 14 ++++----------
src/procman-app.cpp | 11 +----------
src/proctable.cpp | 14 +++-----------
src/util.cpp | 22 +++++++---------------
src/util.h | 2 +-
5 files changed, 16 insertions(+), 47 deletions(-)
---
diff --git a/src/disks.cpp b/src/disks.cpp
index c528540..6d2e795 100644
--- a/src/disks.cpp
+++ b/src/disks.cpp
@@ -289,13 +289,6 @@ cb_disk_list_destroying (GtkWidget *self, gpointer data)
g_signal_handlers_disconnect_by_func(self, (gpointer) cb_disk_columns_changed, data);
}
-static void
-cb_column_resized (GtkWidget *column, GParamSpec *pspec, gpointer data)
-{
- save_column_size (GTK_TREE_VIEW_COLUMN (column), G_SETTINGS (data));
-}
-
-
void
create_disk_view(ProcmanApp *app, GtkBuilder *builder)
{
@@ -343,7 +336,7 @@ create_disk_view(ProcmanApp *app, GtkBuilder *builder)
col = gtk_tree_view_column_new();
cell = gtk_cell_renderer_pixbuf_new();
- g_signal_connect(G_OBJECT(col), "notify::width", G_CALLBACK(cb_column_resized), settings);
+
gtk_tree_view_column_pack_start(col, cell, FALSE);
gtk_tree_view_column_set_attributes(col, cell, "pixbuf", DISK_ICON,
NULL);
@@ -354,6 +347,7 @@ create_disk_view(ProcmanApp *app, GtkBuilder *builder)
NULL);
gtk_tree_view_column_set_title(col, _(titles[DISK_DEVICE]));
gtk_tree_view_column_set_sort_column_id(col, DISK_DEVICE);
+ bind_column_to_gsetting (settings, col);
gtk_tree_view_column_set_reorderable(col, TRUE);
gtk_tree_view_column_set_resizable(col, TRUE);
gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_FIXED);
@@ -368,8 +362,8 @@ create_disk_view(ProcmanApp *app, GtkBuilder *builder)
gtk_tree_view_column_pack_start(col, cell, TRUE);
gtk_tree_view_column_set_title(col, _(titles[i]));
gtk_tree_view_column_set_resizable(col, TRUE);
- g_signal_connect(G_OBJECT(col), "notify::width", G_CALLBACK(cb_column_resized), settings);
gtk_tree_view_column_set_sort_column_id(col, i);
+ bind_column_to_gsetting (settings, col);
gtk_tree_view_column_set_reorderable(col, TRUE);
gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_append_column(GTK_TREE_VIEW(disk_tree), col);
@@ -396,7 +390,6 @@ create_disk_view(ProcmanApp *app, GtkBuilder *builder)
col = gtk_tree_view_column_new();
cell = gtk_cell_renderer_text_new();
- g_signal_connect(G_OBJECT(col), "notify::width", G_CALLBACK(cb_column_resized), settings);
g_object_set(cell, "xalign", 1.0f, NULL);
gtk_tree_view_column_set_sizing(col, GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_column_pack_start(col, cell, FALSE);
@@ -413,6 +406,7 @@ create_disk_view(ProcmanApp *app, GtkBuilder *builder)
gtk_tree_view_append_column(GTK_TREE_VIEW(disk_tree), col);
gtk_tree_view_column_set_resizable(col, TRUE);
gtk_tree_view_column_set_sort_column_id(col, DISK_USED);
+ bind_column_to_gsetting (settings, col);
gtk_tree_view_column_set_reorderable(col, TRUE);
/* numeric sort */
diff --git a/src/procman-app.cpp b/src/procman-app.cpp
index 1116bdd..5a17fa1 100644
--- a/src/procman-app.cpp
+++ b/src/procman-app.cpp
@@ -412,7 +412,6 @@ procman_get_tree_state (GSettings *settings, GtkWidget *tree, const gchar *child
{
GtkTreeViewColumn *column;
gint width;
- gboolean visible;
int id;
const gchar *title;
gchar *key;
@@ -422,16 +421,8 @@ procman_get_tree_state (GSettings *settings, GtkWidget *tree, const gchar *child
column = static_cast<GtkTreeViewColumn*>(it->data);
id = gtk_tree_view_column_get_sort_column_id (column);
- key = g_strdup_printf ("col-%d-width", id);
- g_settings_get (pt_settings, key, "i", &width);
- g_free (key);
-
- key = g_strdup_printf ("col-%d-visible", id);
- visible = g_settings_get_boolean (pt_settings, key);
- g_free (key);
-
- gtk_tree_view_column_set_visible (column, visible);
/* ensure column is really visible */
+ width = gtk_tree_view_column_get_fixed_width(column);
width = MAX(width, 50);
gtk_tree_view_column_set_fixed_width(column, width);
diff --git a/src/proctable.cpp b/src/proctable.cpp
index 285774c..f55be89 100644
--- a/src/proctable.cpp
+++ b/src/proctable.cpp
@@ -290,13 +290,6 @@ cb_refresh_icons (GtkIconTheme *theme, gpointer data)
cb_timeout(app);
}
-static void
-cb_column_resized (GtkWidget *column, GParamSpec *pspec, gpointer data)
-{
- save_column_size (GTK_TREE_VIEW_COLUMN (column), G_SETTINGS (data));
-}
-
-
GtkWidget *
proctable_new (ProcmanApp * const app)
{
@@ -397,18 +390,17 @@ proctable_new (ProcmanApp * const app)
gtk_tree_view_column_set_title (column, _(titles[0]));
gtk_tree_view_column_set_sort_column_id (column, COL_NAME);
+ bind_column_to_gsetting (settings, column);
gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_column_set_sizing(column, GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_column_set_min_width (column, 1);
gtk_tree_view_column_set_reorderable(column, TRUE);
- g_signal_connect(G_OBJECT(column), "notify::width", G_CALLBACK(cb_column_resized), settings);
gtk_tree_view_append_column (GTK_TREE_VIEW (proctree), column);
gtk_tree_view_set_expander_column (GTK_TREE_VIEW (proctree), column);
for (i = COL_USER; i <= COL_PRIORITY; i++) {
-
- GtkCellRenderer *cell;
GtkTreeViewColumn *col;
+ GtkCellRenderer *cell;
#ifndef HAVE_WNCK
if (i == COL_MEMXSERVER) {
@@ -421,7 +413,7 @@ proctable_new (ProcmanApp * const app)
gtk_tree_view_column_set_title(col, _(titles[i]));
gtk_tree_view_column_set_resizable(col, TRUE);
gtk_tree_view_column_set_sort_column_id(col, i);
- g_signal_connect(G_OBJECT(col), "notify::width", G_CALLBACK(cb_column_resized), settings);
+ bind_column_to_gsetting (settings, col);
gtk_tree_view_column_set_reorderable(col, TRUE);
gtk_tree_view_append_column(GTK_TREE_VIEW(proctree), col);
diff --git a/src/util.cpp b/src/util.cpp
index 4db248f..ec04dd0 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -651,23 +651,15 @@ namespace procman
}
-
void
-save_column_size (GtkTreeViewColumn *column, GSettings *settings)
+bind_column_to_gsetting (GSettings *settings, GtkTreeViewColumn *column)
{
- int width;
char *key;
- int id;
- int saved_width;
-
- id = gtk_tree_view_column_get_sort_column_id (column);
- width = gtk_tree_view_column_get_width (column);
- key = g_strdup_printf ("col-%d-width", id);
-
- g_settings_get (settings, key, "i", &saved_width);
- if (saved_width != width) {
- g_settings_set_int (settings, key, width);
- }
-
+ gint column_id = gtk_tree_view_column_get_sort_column_id(column);
+ key = g_strdup_printf ("col-%d-width", column_id);
+ g_settings_bind (settings, key, column, "fixed-width", G_SETTINGS_BIND_DEFAULT);
+ g_free (key);
+ key = g_strdup_printf ("col-%d-visible", column_id);
+ g_settings_bind (settings, key, column, "visible", G_SETTINGS_BIND_DEFAULT);
g_free (key);
}
diff --git a/src/util.h b/src/util.h
index cc643a6..3b0d0b5 100644
--- a/src/util.h
+++ b/src/util.h
@@ -167,7 +167,7 @@ namespace procman
std::string format_network_rate(guint64 rate, guint64 max_rate = 0);
}
-void save_column_size (GtkTreeViewColumn *column, GSettings *settings);
+void bind_column_to_gsetting (GSettings *settings, GtkTreeViewColumn *column);
#endif /* H_GNOME_SYSTEM_MONITOR_UTIL_1123178725 */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]