mirror of
https://github.com/Llewellynvdm/Tomb.git
synced 2024-11-29 00:06:38 +00:00
tomb gtk2 gui
a start for the status tray with popup menu
This commit is contained in:
parent
49e6d09eae
commit
1d0b8b8433
115
src/tomb-gtk.cpp
Normal file
115
src/tomb-gtk.cpp
Normal file
@ -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(); }
|
Loading…
Reference in New Issue
Block a user