[Xfce4-commits] <xfce4-systemload-plugin:master> Refactor widget creation (sorry, couldn't resist..)

Landry Breuil noreply at xfce.org
Sat Jun 23 12:20:01 CEST 2012


Updating branch refs/heads/master
         to 0c5c25aa7d6d2f6c52858d0d933cbe1a109bd090 (commit)
       from 1b9d578919d245a3503fd2d4e33f50a8f148b390 (commit)

commit 0c5c25aa7d6d2f6c52858d0d933cbe1a109bd090
Author: Landry Breuil <landry at xfce.org>
Date:   Sat Jun 23 12:07:39 2012 +0200

    Refactor widget creation (sorry, couldn't resist..)
    
    - introduce create_monitor() called once instead of recreating
      widgets all the time in update_orientation()
    - update_orientation() now _only_ takes care of orientation stuff
    - use XfceHVBox instead of creating hbox/vbox depending on orientation
    - remove gtk_widget_modify_bg()/_show() extra calls, this is already
      done in setup_monitor()

 panel-plugin/systemload.c |   69 ++++++++++++++++----------------------------
 1 files changed, 25 insertions(+), 44 deletions(-)

diff --git a/panel-plugin/systemload.c b/panel-plugin/systemload.c
index abccd20..c44ea1a 100644
--- a/panel-plugin/systemload.c
+++ b/panel-plugin/systemload.c
@@ -211,42 +211,41 @@ monitor_update_orientation (XfcePanelPlugin  *plugin,
                             t_global_monitor *global)
 {
     gint count;
-
-    gtk_widget_hide(GTK_WIDGET(global->ebox));
-
-    if (global->box)
-        gtk_container_remove(GTK_CONTAINER(global->ebox), 
-                             GTK_WIDGET(global->box));
-    
-    if (panel_orientation == GTK_ORIENTATION_HORIZONTAL)
-    {
-        global->box = gtk_hbox_new(FALSE, 0);
-    }
-    else
-    {
-        global->box = gtk_vbox_new(FALSE, 0);
-    }
-    gtk_widget_show(global->box);
-
+    xfce_hvbox_set_orientation(XFCE_HVBOX(global->box), panel_orientation);
     for(count = 0; count < 3; count++)
     {
-        global->monitor[count]->label =
-            gtk_label_new(global->monitor[count]->options.label_text);
+        xfce_hvbox_set_orientation(XFCE_HVBOX(global->monitor[count]->box), panel_orientation);
         gtk_label_set_angle(GTK_LABEL(global->monitor[count]->label),
                             (orientation == GTK_ORIENTATION_HORIZONTAL) ? 0 : -90);
-
-        global->monitor[count]->status = GTK_WIDGET(gtk_progress_bar_new());
-
         if (panel_orientation == GTK_ORIENTATION_HORIZONTAL)
         {
-            global->monitor[count]->box = GTK_WIDGET(gtk_hbox_new(FALSE, 0));
             gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(global->monitor[count]->status), GTK_PROGRESS_BOTTOM_TO_TOP);
         }
         else
         {
-            global->monitor[count]->box = GTK_WIDGET(gtk_vbox_new(FALSE, 0));
             gtk_progress_bar_set_orientation(GTK_PROGRESS_BAR(global->monitor[count]->status), GTK_PROGRESS_LEFT_TO_RIGHT);
         }
+    }
+    gtk_label_set_angle(GTK_LABEL(global->uptime->label),
+                        (orientation == GTK_ORIENTATION_HORIZONTAL) ? 0 : -90);
+}
+
+static void
+create_monitor (t_global_monitor *global)
+{
+    gint count;
+
+    global->box = xfce_hvbox_new(xfce_panel_plugin_get_orientation(global->plugin), FALSE, 0);
+    gtk_widget_show(global->box);
+
+    for(count = 0; count < 3; count++)
+    {
+        global->monitor[count]->label =
+            gtk_label_new(global->monitor[count]->options.label_text);
+
+        global->monitor[count]->status = GTK_WIDGET(gtk_progress_bar_new());
+
+        global->monitor[count]->box = xfce_hvbox_new(xfce_panel_plugin_get_orientation(global->plugin), FALSE, 0);
 
         gtk_box_pack_start(GTK_BOX(global->monitor[count]->box),
                            GTK_WIDGET(global->monitor[count]->label),
@@ -257,15 +256,6 @@ monitor_update_orientation (XfcePanelPlugin  *plugin,
         gtk_container_add(GTK_CONTAINER(global->monitor[count]->ebox),
                           GTK_WIDGET(global->monitor[count]->box));
 
-        gtk_widget_modify_bg(GTK_WIDGET(global->monitor[count]->status),
-                             GTK_STATE_PRELIGHT,
-                             &global->monitor[count]->options.color);
-        gtk_widget_modify_bg(GTK_WIDGET(global->monitor[count]->status),
-                             GTK_STATE_SELECTED,
-                             &global->monitor[count]->options.color);
-        gtk_widget_modify_base(GTK_WIDGET(global->monitor[count]->status),
-                               GTK_STATE_SELECTED,
-                               &global->monitor[count]->options.color);
         gtk_event_box_set_visible_window(GTK_EVENT_BOX(global->monitor[count]->ebox), FALSE);
         gtk_event_box_set_above_child(GTK_EVENT_BOX(global->monitor[count]->ebox), TRUE);
 
@@ -278,15 +268,7 @@ monitor_update_orientation (XfcePanelPlugin  *plugin,
                            GTK_WIDGET(global->monitor[count]->ebox),
                            FALSE, FALSE, 0);
 
-        if(global->monitor[count]->options.enabled)
-        {
-            gtk_widget_show(GTK_WIDGET(global->monitor[count]->ebox));
-            gtk_widget_show(GTK_WIDGET(global->monitor[count]->box));
-            if (global->monitor[count]->options.use_label)
-                gtk_widget_show(global->monitor[count]->label);
-
-            gtk_widget_show(GTK_WIDGET(global->monitor[count]->status));
-        }
+        gtk_widget_show_all(GTK_WIDGET(global->monitor[count]->ebox));
     }
 
     global->uptime->ebox = gtk_event_box_new();
@@ -295,8 +277,6 @@ monitor_update_orientation (XfcePanelPlugin  *plugin,
     gtk_event_box_set_visible_window(GTK_EVENT_BOX(global->uptime->ebox), FALSE);
 
     global->uptime->label = gtk_label_new("");
-    gtk_label_set_angle(GTK_LABEL(global->uptime->label),
-                        (orientation == GTK_ORIENTATION_HORIZONTAL) ? 0 : -90);
 
     gtk_widget_show(global->uptime->label);
     gtk_container_add(GTK_CONTAINER(global->uptime->ebox),
@@ -922,6 +902,7 @@ systemload_construct (XfcePanelPlugin *plugin)
 
     monitor_read_config (plugin, global);
     
+    create_monitor (global);
 #ifdef HAS_PANEL_49
     monitor_set_mode (plugin,
                       xfce_panel_plugin_get_mode (plugin),


More information about the Xfce4-commits mailing list