[Xfce4-commits] <xfce4-taskmanager:master> Implement option "Draw borders around monitors"

Mike Massonnet noreply at xfce.org
Wed Sep 29 16:52:03 CEST 2010


Updating branch refs/heads/master
         to e97c14fa68ea9121579c4aadaac034f3e9b6e575 (commit)
       from bfd7faf7c7e2d58050670c2d182b074ddf074da7 (commit)

commit e97c14fa68ea9121579c4aadaac034f3e9b6e575
Author: Mike Massonnet <mmassonnet at xfce.org>
Date:   Sun Sep 26 09:47:48 2010 +0000

    Implement option "Draw borders around monitors"

 src/process-monitor.c  |   30 ++++++++++++++++++++++++++----
 src/process-monitor.h  |    1 +
 src/process-window.c   |   13 ++++++++++++-
 src/settings-dialog.ui |    1 -
 4 files changed, 39 insertions(+), 6 deletions(-)

diff --git a/src/process-monitor.c b/src/process-monitor.c
index 350c5d5..5ad24e2 100644
--- a/src/process-monitor.c
+++ b/src/process-monitor.c
@@ -24,6 +24,7 @@ enum
 	PROP_COLOR_RED,
 	PROP_COLOR_GREEN,
 	PROP_COLOR_BLUE,
+	PROP_PAINT_BOX,
 };
 typedef struct _XtmProcessMonitorClass XtmProcessMonitorClass;
 struct _XtmProcessMonitorClass
@@ -39,6 +40,7 @@ struct _XtmProcessMonitor
 	gfloat			color_red;
 	gfloat			color_green;
 	gfloat			color_blue;
+	gboolean		paint_box;
 };
 G_DEFINE_TYPE (XtmProcessMonitor, xtm_process_monitor, GTK_TYPE_DRAWING_AREA)
 
@@ -66,6 +68,8 @@ xtm_process_monitor_class_init (XtmProcessMonitorClass *klass)
 		g_param_spec_float ("color-green", "ColorGreen", "Color green", 0, 1, 0, G_PARAM_READWRITE));
 	g_object_class_install_property (class, PROP_COLOR_BLUE,
 		g_param_spec_float ("color-blue", "ColorBlue", "Color blue", 0, 1, 0, G_PARAM_READWRITE));
+	g_object_class_install_property (class, PROP_PAINT_BOX,
+		g_param_spec_boolean ("paint-box", "PaintBox", "Paint box around monitor", TRUE, G_PARAM_CONSTRUCT|G_PARAM_READWRITE));
 }
 
 static void
@@ -106,6 +110,10 @@ xtm_process_monitor_get_property (GObject *object, guint property_id, GValue *va
 		g_value_set_float (value, monitor->color_blue);
 		break;
 
+		case PROP_PAINT_BOX:
+		g_value_set_boolean (value, monitor->paint_box);
+		break;
+
 		default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 		break;
@@ -134,6 +142,10 @@ xtm_process_monitor_set_property (GObject *object, guint property_id, const GVal
 		monitor->color_blue = g_value_get_float (value);
 		break;
 
+		case PROP_PAINT_BOX:
+		monitor->paint_box = g_value_get_boolean (value);
+		break;
+
 		default:
 		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
 		break;
@@ -235,8 +247,9 @@ xtm_process_monitor_paint (XtmProcessMonitor *monitor)
 	height = GTK_WIDGET (monitor)->allocation.height;
 
 	/* Paint a box */
-	gtk_paint_box (GTK_WIDGET (monitor)->style, GTK_WIDGET (monitor)->window, GTK_STATE_PRELIGHT, GTK_SHADOW_IN,
-			NULL, GTK_WIDGET (monitor), "trough", 0, 0, width, height);
+	if (monitor->paint_box)
+		gtk_paint_box (GTK_WIDGET (monitor)->style, GTK_WIDGET (monitor)->window, GTK_STATE_PRELIGHT, GTK_SHADOW_IN,
+				NULL, GTK_WIDGET (monitor), "trough", 0, 0, width, height);
 
 	/* Paint the graph */
 	graph_surface = xtm_process_monitor_graph_surface_create (monitor);
@@ -272,8 +285,9 @@ xtm_process_monitor_paint (XtmProcessMonitor *monitor)
 	cairo_stroke (cr);
 
 	/* Repaint a shadow on top of everything to clear corners */
-	gtk_paint_shadow (GTK_WIDGET (monitor)->style, GTK_WIDGET (monitor)->window, GTK_STATE_PRELIGHT, GTK_SHADOW_IN,
-			NULL, GTK_WIDGET (monitor), "trough", 0, 0, width, height);
+	if (monitor->paint_box)
+		gtk_paint_shadow (GTK_WIDGET (monitor)->style, GTK_WIDGET (monitor)->window, GTK_STATE_PRELIGHT, GTK_SHADOW_IN,
+				NULL, GTK_WIDGET (monitor), "trough", 0, 0, width, height);
 
 	cairo_destroy (cr);
 }
@@ -326,3 +340,11 @@ xtm_process_monitor_set_source_color (XtmProcessMonitor *monitor, gdouble red, g
 		gdk_window_invalidate_rect (GTK_WIDGET (monitor)->window, NULL, FALSE);
 }
 
+void
+xtm_process_monitor_set_paint_box (XtmProcessMonitor *monitor, gboolean paint_box)
+{
+	g_return_if_fail (XTM_IS_PROCESS_MONITOR (monitor));
+	g_object_set (monitor, "paint-box", paint_box, NULL);
+	if (GDK_IS_WINDOW (GTK_WIDGET (monitor)->window))
+		gdk_window_invalidate_rect (GTK_WIDGET (monitor)->window, NULL, FALSE);
+}
diff --git a/src/process-monitor.h b/src/process-monitor.h
index e4ead80..aa90f98 100644
--- a/src/process-monitor.h
+++ b/src/process-monitor.h
@@ -31,5 +31,6 @@ void		xtm_process_monitor_add_peak			(XtmProcessMonitor *monitor, gfloat peak);
 void		xtm_process_monitor_set_step_size		(XtmProcessMonitor *monitor, gfloat step_size);
 void		xtm_process_monitor_clear			(XtmProcessMonitor *monitor);
 void		xtm_process_monitor_set_source_color		(XtmProcessMonitor *monitor, gdouble red, gdouble green, gdouble blue);
+void		xtm_process_monitor_set_paint_box		(XtmProcessMonitor *monitor, gboolean paint_box);
 
 #endif /* !PROCESS_MONITOR_H */
diff --git a/src/process-window.c b/src/process-window.c
index a8fc1b2..0a48abe 100644
--- a/src/process-window.c
+++ b/src/process-window.c
@@ -64,6 +64,7 @@ static void	xtm_process_window_hide				(GtkWidget *widget);
 static void	emit_destroy_signal				(XtmProcessWindow *window);
 static gboolean	emit_delete_event_signal			(XtmProcessWindow *window, GdkEvent *event);
 static void	monitor_update_step_size			(XtmProcessWindow *window);
+static void	monitor_update_paint_box			(XtmProcessWindow *window);
 static void	show_about_dialog				(XtmProcessWindow *window);
 
 
@@ -121,6 +122,8 @@ xtm_process_window_init (XtmProcessWindow *window)
 		gtk_widget_show (window->priv->mem_monitor);
 		gtk_container_add (GTK_CONTAINER (toolitem), window->priv->mem_monitor);
 
+		monitor_update_paint_box (window);
+		g_signal_connect_swapped (window->priv->settings, "notify::monitor-paint-box", G_CALLBACK (monitor_update_paint_box), window);
 		g_signal_connect_swapped (window->priv->settings, "notify::refresh-rate", G_CALLBACK (monitor_update_step_size), window);
 	}
 
@@ -207,6 +210,15 @@ emit_delete_event_signal (XtmProcessWindow *window, GdkEvent *event)
 }
 
 static void
+monitor_update_paint_box (XtmProcessWindow *window)
+{
+	gboolean paint_box;
+	g_object_get (window->priv->settings, "monitor-paint-box", &paint_box, NULL);
+	xtm_process_monitor_set_paint_box (XTM_PROCESS_MONITOR (window->priv->cpu_monitor), paint_box);
+	xtm_process_monitor_set_paint_box (XTM_PROCESS_MONITOR (window->priv->mem_monitor), paint_box);
+}
+
+static void
 monitor_update_step_size (XtmProcessWindow *window)
 {
 	guint refresh_rate;
@@ -348,4 +360,3 @@ xtm_process_window_show_swap_usage (XtmProcessWindow *window, gboolean show_swap
 	g_return_if_fail (GTK_IS_STATUSBAR (window->priv->statusbar));
 	g_object_set (window->priv->statusbar, "show-swap", show_swap_usage, NULL);
 }
-
diff --git a/src/settings-dialog.ui b/src/settings-dialog.ui
index dc37e24..1b8ee35 100644
--- a/src/settings-dialog.ui
+++ b/src/settings-dialog.ui
@@ -77,7 +77,6 @@
                                   <object class="GtkCheckButton" id="button-monitor-paint-box">
                                     <property name="label" translatable="yes">Draw borders around monitors</property>
                                     <property name="visible">True</property>
-                                    <property name="sensitive">False</property>
                                     <property name="can_focus">True</property>
                                     <property name="receives_default">False</property>
                                     <property name="xalign">0.49000000953674316</property>



More information about the Xfce4-commits mailing list