[Top][All Lists]
[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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r2955 - in gnunet-gtk: . src/core src/include,
moon <=