[Xfce4-commits] <xfce4-cpufreq-plugin:master> Sanitize the handling the content of the panel

Florian Rivoal noreply at xfce.org
Sun Jan 23 11:26:02 CET 2011


Updating branch refs/heads/master
         to 3bd11463c0175de95153c82ba145ff053a798a55 (commit)
       from 96f07b7e184e7b9be563fbbd7467d7629a9b964a (commit)

commit 3bd11463c0175de95153c82ba145ff053a798a55
Author: Florian Rivoal <frivoal at xfce.org>
Date:   Sat Jan 22 20:58:01 2011 +0900

    Sanitize the handling the content of the panel

 panel-plugin/xfce4-cpufreq-configure.c |   18 +++--
 panel-plugin/xfce4-cpufreq-plugin.c    |  124 +++++++++++++++++++-------------
 panel-plugin/xfce4-cpufreq-plugin.h    |    7 +-
 3 files changed, 90 insertions(+), 59 deletions(-)

diff --git a/panel-plugin/xfce4-cpufreq-configure.c b/panel-plugin/xfce4-cpufreq-configure.c
index 4774ee1..b319522 100644
--- a/panel-plugin/xfce4-cpufreq-configure.c
+++ b/panel-plugin/xfce4-cpufreq-configure.c
@@ -35,12 +35,18 @@ static void
 check_button_changed (GtkWidget *button, CpuFreqPluginConfigure *configure)
 {
 	if (button == configure->display_frame)
-		cpuFreq->options->show_frame =
-			gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
-	
+	{
+		cpuFreq->options->show_frame = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+		gtk_frame_set_shadow_type (GTK_FRAME (cpuFreq->frame),cpuFreq->options->show_frame ? GTK_SHADOW_IN : GTK_SHADOW_NONE);
+		return;
+	}
 	else if (button == configure->display_icon)
+	{
 		cpuFreq->options->show_icon = 
 			gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
+		cpufreq_update_icon (cpuFreq);
+		return;
+	}
 
 	else if (button == configure->display_freq)
 		cpuFreq->options->show_label_freq =
@@ -50,7 +56,8 @@ check_button_changed (GtkWidget *button, CpuFreqPluginConfigure *configure)
 		cpuFreq->options->show_label_governor =
 			gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (button));
 
-	cpufreq_widgets ();
+	cpufreq_prepare_label (cpuFreq);
+	cpufreq_update_plugin ();
 }
 
 static void
@@ -61,8 +68,7 @@ combo_changed (GtkWidget *combo, CpuFreqPluginConfigure *configure)
 	if (GTK_WIDGET (combo) == configure->combo_cpu)
 	{
 		cpuFreq->options->show_cpu = selected;
-
-		cpufreq_widgets ();
+		cpufreq_update_plugin ();
 	}
 }
 
diff --git a/panel-plugin/xfce4-cpufreq-plugin.c b/panel-plugin/xfce4-cpufreq-plugin.c
index 312a882..6c30bf2 100644
--- a/panel-plugin/xfce4-cpufreq-plugin.c
+++ b/panel-plugin/xfce4-cpufreq-plugin.c
@@ -18,7 +18,6 @@
  */
 
 #define SPACING           2  /* Space between the widgets */
-#define FRAME_BORDER      2  /* Space between the frame and the panel */
 #define BORDER            1  /* Space between the frame and the widgets */
 
 #ifdef HAVE_CONFIG_H
@@ -60,7 +59,15 @@ cpufreq_update_label (CpuInfo *cpu)
 		
 		NULL);
 
-	gtk_label_set_label (GTK_LABEL(cpuFreq->label), label);
+	if (strcmp(label,""))
+	{
+		gtk_label_set_label (GTK_LABEL(cpuFreq->label), label);
+		gtk_widget_show (cpuFreq->label);
+	}
+	else
+	{
+		gtk_widget_hide (cpuFreq->label);
+	}
 
 	g_free (freq);
 	g_free (label);
@@ -120,64 +127,87 @@ cpufreq_restart_timeout (void)
 			NULL);
 }
 
-void
-cpufreq_widgets (void)
+static void
+cpufreq_orientation_changed (XfcePanelPlugin *plugin, GtkOrientation orientation, CpuFreqPlugin *cpufreq)
 {
-	gint		size;
-	GtkWidget	*box;
-	GtkOrientation	orientation;
-
-	orientation = xfce_panel_plugin_get_orientation (cpuFreq->plugin);
-	size	    = xfce_panel_plugin_get_size (cpuFreq->plugin);
-
-	if (cpuFreq->ebox)
-		gtk_widget_destroy (cpuFreq->ebox);
-	cpuFreq->ebox = gtk_event_box_new ();
-
-	cpuFreq->frame = gtk_frame_new (NULL);
-	gtk_frame_set_shadow_type (GTK_FRAME (cpuFreq->frame),cpuFreq->options->show_frame ? GTK_SHADOW_IN : GTK_SHADOW_NONE);
-	gtk_container_add (GTK_CONTAINER (cpuFreq->ebox), cpuFreq->frame);
-	gtk_container_set_border_width (GTK_CONTAINER (cpuFreq->frame),	size > 26 ? FRAME_BORDER : 0);
-
-	if (orientation == GTK_ORIENTATION_HORIZONTAL)
-		box = gtk_hbox_new (FALSE, SPACING);
-	else
-		box = gtk_vbox_new (FALSE, SPACING);
-
-	gtk_container_set_border_width (GTK_CONTAINER (box), BORDER);
-	gtk_container_add (GTK_CONTAINER (cpuFreq->frame), box);
+	gtk_orientable_set_orientation (GTK_ORIENTABLE (cpufreq->box), orientation);
+}
 
-	gtk_tooltips_set_tip (cpuFreq->tooltip, cpuFreq->ebox, "", NULL);
+void
+cpufreq_update_icon (CpuFreqPlugin *cpufreq)
+{
+	if (cpufreq->icon)
+	{
+		gtk_widget_destroy (cpufreq->icon);
+		cpufreq->icon = NULL;
+	}
 
-	if(cpuFreq->options->show_icon)
+	if(cpufreq->options->show_icon)
 	{
 
 		GdkPixbuf *buf = gtk_icon_theme_load_icon (gtk_icon_theme_get_default (),
-				                                     "cpu", size - 8, 0, NULL);
+				                                     "cpu", cpufreq->icon_size, 0, NULL);
 		if (buf)
 		{
-			cpuFreq->icon = gtk_image_new_from_pixbuf (buf);
+			cpufreq->icon = gtk_image_new_from_pixbuf (buf);
 			g_object_unref (G_OBJECT (buf));
 		}
 		else
 		{
-			cpuFreq->icon = gtk_image_new_from_icon_name ("cpu", GTK_ICON_SIZE_BUTTON);
+			cpufreq->icon = gtk_image_new_from_icon_name ("cpu", GTK_ICON_SIZE_BUTTON);
 		}
-		gtk_box_pack_start (GTK_BOX (box), cpuFreq->icon, FALSE, FALSE, 0);
+		gtk_box_pack_start (GTK_BOX (cpufreq->box), cpufreq->icon, FALSE, FALSE, 0);
+		gtk_widget_show (cpufreq->icon);
 	}
+}
 
+void
+cpufreq_prepare_label (CpuFreqPlugin *cpufreq)
+{
+	if (cpufreq->label)
+	{
+		gtk_widget_destroy (cpufreq->label);
+		cpufreq->label = NULL;
+	}
 	if (cpuFreq->options->show_label_freq || cpuFreq->options->show_label_governor)
 	{
-		cpuFreq->label = gtk_label_new ("");
-		gtk_box_pack_start (GTK_BOX (box), cpuFreq->label, FALSE, FALSE, 0);
-		gtk_label_set_use_markup (GTK_LABEL (cpuFreq->label), TRUE);
+		cpuFreq->label = gtk_label_new (NULL);
+		gtk_box_pack_end (GTK_BOX (cpufreq->box), cpuFreq->label, FALSE, FALSE, 0);
 	}
+}
 
-	g_signal_connect (cpuFreq->ebox, "button-press-event", G_CALLBACK (cpufreq_overview), cpuFreq);  
+static void
+cpufreq_widgets (void)
+{
+	GtkOrientation	orientation;
 
-	gtk_widget_show_all (cpuFreq->ebox);
-	gtk_container_add (GTK_CONTAINER (cpuFreq->plugin), cpuFreq->ebox);
+	orientation = xfce_panel_plugin_get_orientation (cpuFreq->plugin);
+	cpuFreq->icon_size = xfce_panel_plugin_get_size (cpuFreq->plugin) - 4;
+
+	cpuFreq->ebox = gtk_event_box_new ();
 	xfce_panel_plugin_add_action_widget (cpuFreq->plugin, cpuFreq->ebox);
+	gtk_container_add (GTK_CONTAINER (cpuFreq->plugin), cpuFreq->ebox);
+
+	cpuFreq->frame = gtk_frame_new (NULL);
+	gtk_frame_set_shadow_type (GTK_FRAME (cpuFreq->frame),cpuFreq->options->show_frame ? GTK_SHADOW_IN : GTK_SHADOW_NONE);
+	gtk_container_add (GTK_CONTAINER (cpuFreq->ebox), cpuFreq->frame);
+	gtk_widget_show (cpuFreq->frame);
+
+	cpuFreq->box = gtk_hbox_new (FALSE, SPACING);
+	gtk_container_set_border_width (GTK_CONTAINER (cpuFreq->box), BORDER);
+	gtk_container_add (GTK_CONTAINER (cpuFreq->frame), cpuFreq->box);
+
+	gtk_tooltips_set_tip (cpuFreq->tooltip, cpuFreq->ebox, "", NULL);
+
+	cpufreq_update_icon (cpuFreq);
+
+	cpufreq_prepare_label (cpuFreq);
+
+	g_signal_connect (cpuFreq->ebox, "button-press-event", G_CALLBACK (cpufreq_overview), cpuFreq);
+
+	cpufreq_orientation_changed (cpuFreq->plugin, orientation, cpuFreq);
+	gtk_widget_show (cpuFreq->box);
+	gtk_widget_show (cpuFreq->ebox);
 
 	cpufreq_update_plugin ();
 }
@@ -260,20 +290,15 @@ cpufreq_free (XfcePanelPlugin *plugin)
 }
 
 static gboolean
-cpufreq_set_size (XfcePanelPlugin *plugin, gint wsize)
+cpufreq_set_size (XfcePanelPlugin *plugin, gint size, CpuFreqPlugin *cpufreq)
 {
-	cpufreq_widgets ();
+	cpufreq->icon_size = size - 4;
+	cpufreq_update_icon (cpufreq);
 
 	return TRUE;
 }
 
 static void
-cpufreq_orientation_changed (XfcePanelPlugin *plugin, GtkOrientation orientation)
-{
-	cpufreq_widgets ();
-}
-
-static void
 cpufreq_construct (XfcePanelPlugin *plugin)
 {
 	xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8");
@@ -291,6 +316,7 @@ cpufreq_construct (XfcePanelPlugin *plugin)
 	if (cpufreq_linux_init () == FALSE)
 		xfce_err (_("Your system is not configured correctly to support cpu frequency scaling !"));
 
+	gtk_widget_set_size_request (GTK_WIDGET (plugin), -1, -1);
 	cpufreq_widgets ();
 
 	cpuFreq->timeoutHandle = g_timeout_add_seconds (
@@ -306,9 +332,9 @@ cpufreq_construct (XfcePanelPlugin *plugin)
 	g_signal_connect (plugin, "save", G_CALLBACK (cpufreq_write_config),
 			  NULL);
 	g_signal_connect (plugin, "size-changed",
-			  G_CALLBACK (cpufreq_set_size), NULL);
+			  G_CALLBACK (cpufreq_set_size), cpuFreq);
 	g_signal_connect (plugin, "orientation-changed",
-			  G_CALLBACK (cpufreq_orientation_changed), NULL);
+			  G_CALLBACK (cpufreq_orientation_changed), cpuFreq);
 
 	/* the configure and about menu items are hidden by default */
 	xfce_panel_plugin_menu_show_configure (plugin);
diff --git a/panel-plugin/xfce4-cpufreq-plugin.h b/panel-plugin/xfce4-cpufreq-plugin.h
index d669557..b150933 100644
--- a/panel-plugin/xfce4-cpufreq-plugin.h
+++ b/panel-plugin/xfce4-cpufreq-plugin.h
@@ -54,9 +54,11 @@ typedef struct
 	GPtrArray *cpus;
 
 	/* Widgets */
-	GtkWidget   *ebox, *frame, *icon, *label;
+	GtkWidget   *ebox, *frame, *box, *icon, *label;
 	GtkTooltips *tooltip;
 
+	gint icon_size;
+
 	CpuFreqPluginOptions  *options;
 	gint 		      timeoutHandle;
 } CpuFreqPlugin;
@@ -72,9 +74,6 @@ void
 cpufreq_restart_timeout (void);
 
 void
-cpufreq_widgets (void);
-
-void
 cpufreq_write_config (XfcePanelPlugin *plugin);
 
 G_END_DECLS



More information about the Xfce4-commits mailing list