[Xfce4-commits] <xfce4-indicator-plugin:master> add menubar

Mark Trompell noreply at xfce.org
Thu Feb 17 08:30:09 CET 2011


Updating branch refs/heads/master
         to 3df674322c3a59d3084b5442da45ef78664165dd (commit)
       from 71bbe206145a95b27469beaff3070fdeba2eaa93 (commit)

commit 3df674322c3a59d3084b5442da45ef78664165dd
Author: Mark Trompell <mark at foresightlinux.org>
Date:   Tue Jun 2 11:54:36 2009 +0200

    add menubar

 panel-plugin/indicator.c |   48 ++++++++++++++++++++++++++++++---------------
 panel-plugin/indicator.h |    5 +--
 2 files changed, 34 insertions(+), 19 deletions(-)

diff --git a/panel-plugin/indicator.c b/panel-plugin/indicator.c
index f012f9a..d7e632b 100644
--- a/panel-plugin/indicator.c
+++ b/panel-plugin/indicator.c
@@ -141,6 +141,7 @@ indicator_new (XfcePanelPlugin *plugin)
   IndicatorPlugin   *indicator;
   GtkOrientation  orientation;
   GtkWidget      *label;
+  gint indicators_loaded = 0;
 
   /* allocate memory for the plugin structure */
   indicator = panel_slice_new0 (IndicatorPlugin);
@@ -156,22 +157,37 @@ indicator_new (XfcePanelPlugin *plugin)
 
   /* TODO: Create menubar */
   /* create some panel widgets */
-  indicator->ebox = gtk_event_box_new ();
-  gtk_widget_show (indicator->ebox);
-
-  indicator->hvbox = xfce_hvbox_new (orientation, FALSE, 2);
-  gtk_widget_show (indicator->hvbox);
-  gtk_container_add (GTK_CONTAINER (indicator->ebox), indicator->hvbox);
-
-  /* some indicator widgets */
-  label = gtk_label_new (_("Indicator"));
-  gtk_widget_show (label);
-  gtk_box_pack_start (GTK_BOX (indicator->hvbox), label, FALSE, FALSE, 0);
-
-  label = gtk_label_new (_("Plugin"));
-  gtk_widget_show (label);
-  gtk_box_pack_start (GTK_BOX (indicator->hvbox), label, FALSE, FALSE, 0);
-
+  /* Build menubar */
+  indicator->menubar = gtk_menu_bar_new();
+  GTK_WIDGET_SET_FLAGS (indicator->menubar, GTK_WIDGET_FLAGS(indicator->menubar) | GTK_CAN_FOCUS);
+  gtk_widget_set_name(GTK_WIDGET (indicator->menubar), "fast-user-switch-menubar");
+  //g_signal_connect(indicator->menubar, "button-press-event", G_CALLBACK(menubar_press), NULL);
+  //g_signal_connect_after(indicator->menubar, "expose-event", G_CALLBACK(menubar_on_expose), menubar);
+  gtk_container_set_border_width(GTK_CONTAINER(indicator->menubar), 0);
+
+  
+  /* load 'em */
+  if (g_file_test(INDICATOR_DIR, (G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR))) {
+    GDir * dir = g_dir_open(INDICATOR_DIR, 0, NULL);
+
+    const gchar * name;
+    while ((name = g_dir_read_name(dir)) != NULL) {
+      if (load_module(name, indicator->menubar))
+        indicators_loaded++;
+    }
+    g_dir_close (dir);
+  }
+
+  if (indicators_loaded == 0) {
+    /* A label to allow for click through */
+    indicator->item = gtk_label_new(_("No Indicators"));
+    gtk_widget_show(indicator->item);
+    gtk_container_add (GTK_CONTAINER (indicator->ebox), indicator->item);
+  } else {
+    gtk_container_add (GTK_CONTAINER (indicator->ebox), indicator->menubar);
+    gtk_widget_show(indicator->menubar);
+  }
+  gtk_widget_show(indicator->ebox);
   return indicator;
 }
 
diff --git a/panel-plugin/indicator.h b/panel-plugin/indicator.h
index 104c9b1..c2c8127 100644
--- a/panel-plugin/indicator.h
+++ b/panel-plugin/indicator.h
@@ -29,11 +29,10 @@ typedef struct
 
     /* panel widgets */
     GtkWidget       *ebox;
+    GtkWidget       *menubar;
     GtkWidget       *hvbox;
     GtkWidget       *label;    
-    GtkWidget *button;
-    GdkPixbuf *button_pb;
-    GtkWidget *menu;
+    GdkPixbuf       *item;
 
     /* indicator settings */
     gchar           *setting1;



More information about the Xfce4-commits mailing list