commit 1d0b8b8433617d5be69ea50bc5abb0c69031d173
parent 49e6d09eae55835a90e92ac565a636a3bc981405
Author: Jaromil <jaromil@dyne.org>
Date:   Tue, 11 Jan 2011 18:09:28 +0100
tomb gtk2 gui
a start for the status tray with popup menu
Diffstat:
| A | src/tomb-gtk.cpp |  |  | 115 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | 
1 file changed, 115 insertions(+), 0 deletions(-)
diff --git a/src/tomb-gtk.cpp b/src/tomb-gtk.cpp
@@ -0,0 +1,115 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <gtk/gtk.h>
+
+/* The Tomb icon is an artwork by Jordi aka MonMort
+   a nomadic graffiti artist from Barcelona */
+const char *monmort[] = {
+/* columns rows colors chars-per-pixel */
+"32 32 5 1",
+"  c #000000",
+". c #010101",
+"X c #020202",
+"o c #C1C1C1",
+"O c None",
+/* pixels */
+"OO                            OO",
+"O oooooooooooooooooooooooooooo O",
+" oooooooooooooooooooooooooooooo ",
+" oooooooooooooooooooooooooooooo ",
+" oooooooo  X     oooooo     ooo ",
+" oooooooo        oooooo     ooo ",
+" oooooooo        oooooo     ooo ",
+" oooooooo        oooooo     oooX",
+" oooooooo    X   oooooo     ooo ",
+" oooooooo        oooooo     ooo ",
+" oooooooo       Xoooooo     ooo ",
+" oooooooo        oooooo   X ooo ",
+" oooooooo X      oooooo     ooo ",
+" oooooooooooooooooooooooooooooo ",
+" oooooooooooooooooooooo oooooooX",
+" ooooooooooooooooooooooo oooooo ",
+" oooooooooooooooo      X  ooooo ",
+"O ooooooooooooooooooooooooooooo ",
+"OO          oooooooooooooooooo O",
+"OOOOOOOOOOOO oooo ooo ooo ooo OO",
+"OOOOOOOOOOOOO ooo ooo oooXooo OO",
+"OOOOOOOOOOOOO oooXooo ooo ooo OO",
+"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
+"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
+"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
+"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
+"OOOOOOOOOOOOO ooo ooo ooo oooXOO",
+"OOOOOOOOOOOOO ooo ooo ooo ooo OO",
+"OOOOOOOOOOOOOXooo ooo ooo ooo OO",
+"OOOOOOOOOOOOO ooooooooooooooo OO",
+"OOOOOOOOOOOOOO ooooooooooooo OOO",
+"OOOOOOOOOOOOOOO             OOOO"
+};
+
+
+GtkStatusIcon *status_tomb;
+GtkMenu *menu_tomb;
+
+// forward declaration of callbacks
+gboolean left_click(GtkWidget *w, GdkEvent *e);
+gboolean cb_open(GtkWidget *w, GdkEvent *e);
+gboolean cb_quit(GtkWidget *w, GdkEvent *e);
+
+
+
+int main(int argc, char **argv) {
+
+  GObject *tray;
+  GdkPixbuf *pb_monmort;
+  GtkWidget *menu_open, *menu_close, *menu_quit;
+  gint menu_x, menu_y;
+  gboolean push_in = true;
+
+  gtk_set_locale();
+  gtk_init(&argc, &argv);
+
+  // set and show the status icon
+  pb_monmort = gdk_pixbuf_new_from_xpm_data(monmort);
+  status_tomb = gtk_status_icon_new_from_pixbuf(pb_monmort);
+  //  gtk_status_icon_set_name(status_tomb, "tomb");
+  gtk_status_icon_set_title(status_tomb, "Tomb");
+  gtk_status_icon_set_tooltip_text (status_tomb, "Tomb - encrypted storage undertaker");
+
+  //  gtk_status_icon_set_blinking(status_tomb, true);
+  menu_tomb = (GtkMenu*) gtk_menu_new();
+
+  menu_open = gtk_menu_item_new_with_label("Open");
+  gtk_menu_attach(menu_tomb, menu_open, 0, 1, 0, 1);
+  g_signal_connect_swapped(menu_open, "activate", G_CALLBACK(cb_open), NULL);
+  gtk_widget_show(menu_open);
+  
+  menu_close = gtk_menu_item_new_with_label("Close");
+  gtk_menu_attach(menu_tomb, menu_close, 0, 1, 1, 2);
+  gtk_widget_show(menu_close);
+
+  menu_quit = gtk_menu_item_new_with_label("Quit");
+  gtk_menu_attach(menu_tomb, menu_quit, 0, 1, 2, 3);
+  g_signal_connect_swapped(menu_quit, "activate", G_CALLBACK(cb_quit), NULL);
+  gtk_widget_show(menu_quit);
+
+  g_signal_connect_swapped(status_tomb, "activate", G_CALLBACK(left_click), menu_tomb);
+
+  gtk_main();
+
+  exit(0);
+  
+  
+}
+
+// callbacks
+gboolean left_click(GtkWidget *w, GdkEvent *e) {
+  gtk_menu_popup(menu_tomb, NULL, NULL,
+		 gtk_status_icon_position_menu, status_tomb,
+		 1, gtk_get_current_event_time());
+} 
+gboolean cb_open(GtkWidget *w, GdkEvent *e) { 
+  execlp("tomb","tomb","mount","sarcofago","/mnt/etrom",NULL);
+}
+gboolean cb_quit(GtkWidget *w, GdkEvent *e) { gtk_main_quit(); }