gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[GNUnet-SVN] r2955 - in gnunet-gtk: . src/core src/include


From: moon
Subject: [GNUnet-SVN] r2955 - in gnunet-gtk: . src/core src/include
Date: Sat, 3 Jun 2006 16:00:19 -0700 (PDT)

Author: moon
Date: 2006-06-03 16:00:04 -0700 (Sat, 03 Jun 2006)
New Revision: 2955

Modified:
   gnunet-gtk/gnunet-gtk.glade
   gnunet-gtk/src/core/eggtrayicon.c
   gnunet-gtk/src/core/main.c
   gnunet-gtk/src/include/gnunetgtk_common.h
Log:
"Quit" menu item for tray icon



Modified: gnunet-gtk/gnunet-gtk.glade
===================================================================
--- gnunet-gtk/gnunet-gtk.glade 2006-06-02 20:36:27 UTC (rev 2954)
+++ gnunet-gtk/gnunet-gtk.glade 2006-06-03 23:00:04 UTC (rev 2955)
@@ -7136,4 +7136,29 @@
   </child>
 </widget>
 
+<widget class="GtkMenu" id="trayContextMenu">
+
+  <child>
+    <widget class="GtkImageMenuItem" id="tray_quit">
+      <property name="visible">True</property>
+      <property name="tooltip" translatable="yes">Stop and close 
gnunet-gtk.</property>
+      <property name="label" translatable="yes">_Quit</property>
+      <property name="use_underline">True</property>
+      <signal name="activate" handler="on_tray_quit_activate" 
last_modification_time="Sat, 03 Jun 2006 16:32:53 GMT"/>
+
+      <child internal-child="image">
+       <widget class="GtkImage" id="image43">
+         <property name="visible">True</property>
+         <property name="stock">gtk-quit</property>
+         <property name="icon_size">1</property>
+         <property name="xalign">0.5</property>
+         <property name="yalign">0.5</property>
+         <property name="xpad">0</property>
+         <property name="ypad">0</property>
+       </widget>
+      </child>
+    </widget>
+  </child>
+</widget>
+
 </glade-interface>

Modified: gnunet-gtk/src/core/eggtrayicon.c
===================================================================
--- gnunet-gtk/src/core/eggtrayicon.c   2006-06-02 20:36:27 UTC (rev 2954)
+++ gnunet-gtk/src/core/eggtrayicon.c   2006-06-03 23:00:04 UTC (rev 2955)
@@ -102,11 +102,11 @@
 void         egg_tray_icon_cancel_message (EggTrayIcon *icon,
                                           guint        id);
 
-void initTrayIcon();
-static gboolean tray_clicked (GtkWidget *event_box, GdkEventButton *event, 
gpointer data);
+GtkOrientation egg_tray_icon_get_orientation (EggTrayIcon *icon);
 
 
-GtkOrientation egg_tray_icon_get_orientation (EggTrayIcon *icon);
+static gboolean tray_clicked (GtkWidget *trayContextMenu, GdkEvent *event);
+static gboolean on_tray_quit_activate(GtkWidget *widget, GdkEvent *event, 
gpointer data);
                                            
 G_END_DECLS
 
@@ -589,25 +589,41 @@
 }
 
 
+/* Callback for the "Quit" element on the tray icon menu */
+static gboolean on_tray_quit_activate(GtkWidget *widget, GdkEvent *event, 
gpointer data) {
+    gnunet_gtk_main_quit();
+    return TRUE;
+}
 
-
 /* Function activated when the user clicks the tray icon */
-static gboolean tray_clicked(GtkWidget *event_box, 
-                            GdkEventButton *event, 
-                            gpointer data){
-  GtkWidget *root;
-  root
-    = glade_xml_get_widget(getMainXML(),
-                          "mainWindow");
-  GdkWindowState main_window_state;
-  if (gtk_window_is_active (GTK_WINDOW(root)))
-    gtk_widget_hide (root);
-  else
-    gtk_window_present (GTK_WINDOW(root));
-    main_window_state = getMainWindowState();
-    if(main_window_state & GDK_WINDOW_STATE_MAXIMIZED)
-      gtk_window_maximize (GTK_WINDOW(root));
-  return TRUE;
+static gboolean tray_clicked(GtkWidget *widget, GdkEvent *event) {
+  if(event->type == GDK_BUTTON_PRESS) {
+    GdkEventButton *event_button;
+    event_button = (GdkEventButton *) event;
+    if(event_button->button == 1) {
+      GtkWidget *root;
+      root = glade_xml_get_widget(getMainXML(),
+                              "mainWindow");
+      GdkWindowState main_window_state;
+      if (gtk_window_is_active (GTK_WINDOW(root)))
+        gtk_widget_hide (root);
+      else
+        gtk_window_present (GTK_WINDOW(root));
+        main_window_state = getMainWindowState();
+        if(main_window_state & GDK_WINDOW_STATE_MAXIMIZED)
+          gtk_window_maximize (GTK_WINDOW(root));
+    return TRUE;
+    }
+    else if(event_button->button == 3) {
+      GtkMenu *trayContextMenu;
+      trayContextMenu = GTK_MENU (widget);
+      g_return_val_if_fail (GTK_IS_MENU (trayContextMenu), FALSE);
+      gtk_menu_popup(trayContextMenu, NULL, NULL, NULL, NULL,
+                     event_button->button, event_button->time);
+      return TRUE;
+    }
+  }
+  return FALSE;
 }
 
 /* Initiate the system tray icon */
@@ -615,19 +631,25 @@
    static EggTrayIcon *tray_icon;
    static GtkWidget *tray_icon_image;
    static GtkTooltips *tray_icon_tooltip;
-   GtkWidget *eventbox;
+   GtkWidget *eventbox, *trayContextMenu, *tray_quit;
    GdkPixbuf *pixbuf;
+   GladeXML *trayContextMenuXML;
 
-   tray_icon = egg_tray_icon_new ("gnunet-gtk, GNU's p2p network");
+   trayContextMenuXML = glade_xml_new (getGladeFileName(), "trayContextMenu", 
PACKAGE_NAME);
+   trayContextMenu = glade_xml_get_widget (trayContextMenuXML, 
"trayContextMenu");
+   tray_quit = glade_xml_get_widget (trayContextMenuXML, "tray_quit");
+
+   tray_icon = egg_tray_icon_new (_("GNU's p2p network"));
    pixbuf = gdk_pixbuf_new_from_file (PACKAGE_DATA_DIR"/gnunet-gtk-tray.png", 
NULL);
    tray_icon_image = gtk_image_new_from_pixbuf (pixbuf);
    eventbox = gtk_event_box_new ();
-   gtk_widget_show (eventbox);
    gtk_container_add (GTK_CONTAINER (eventbox), tray_icon_image);
    gtk_container_add (GTK_CONTAINER (tray_icon), eventbox);
-   g_signal_connect (G_OBJECT (eventbox), "button_press_event", G_CALLBACK 
(tray_clicked), NULL );
+   g_signal_connect(G_OBJECT(tray_quit), "activate", 
G_CALLBACK(on_tray_quit_activate), NULL);
+   g_signal_connect_swapped (G_OBJECT (eventbox), "button_press_event", 
G_CALLBACK (tray_clicked), trayContextMenu);
    tray_icon_tooltip = gtk_tooltips_new ();
-   gtk_tooltips_set_tip (tray_icon_tooltip, GTK_WIDGET (tray_icon), 
"gnunet-gtk, GNU's p2p network", NULL);
+   gtk_tooltips_set_tip (tray_icon_tooltip, GTK_WIDGET (tray_icon), _("GNU's 
p2p network"), NULL);
+   gtk_widget_show (eventbox);
    gtk_widget_show_all (GTK_WIDGET (tray_icon));
 }
 

Modified: gnunet-gtk/src/core/main.c
===================================================================
--- gnunet-gtk/src/core/main.c  2006-06-02 20:36:27 UTC (rev 2954)
+++ gnunet-gtk/src/core/main.c  2006-06-03 23:00:04 UTC (rev 2955)
@@ -110,7 +110,7 @@
   return NULL;
 }
 
-static void gnunet_gtk_main_quit() {
+void gnunet_gtk_main_quit() {
   setCustomLogProc(NULL);
   run_with_save_calls(&shutdownCode,
                      NULL);

Modified: gnunet-gtk/src/include/gnunetgtk_common.h
===================================================================
--- gnunet-gtk/src/include/gnunetgtk_common.h   2006-06-02 20:36:27 UTC (rev 
2954)
+++ gnunet-gtk/src/include/gnunetgtk_common.h   2006-06-03 23:00:04 UTC (rev 
2955)
@@ -133,5 +133,6 @@
 */
 GdkWindowState getMainWindowState();
 
+void gnunet_gtk_main_quit();
 
 #endif





reply via email to

[Prev in Thread] Current Thread [Next in Thread]