- #include <gtk/gtk.h>
- #include <stdio.h>
- #include <stdlib.h>
- #define PROGRAM_NAME "myfirstprogram"
- class MyFirstProgram
- {
- GtkWidget *window;
- GtkWidget *button1;
- GtkWidget *button2;
- GtkWidget *button3;
- GtkWidget *button4;
- GtkWidget *tray_menu;
- GtkWidget *menu_item1;
- GtkWidget *menu_item2;
- GtkWidget *menu_item3;
- GtkWidget *menu_item4;
- GtkWidget *menu_item_seperator;
- GtkWidget *label1;
- GtkWidget *label2;
- GtkWidget *vbox1;
- GtkWidget *hbox1;
- GtkWidget *hbox2;
- GtkStatusIcon *tray_icon;
- bool value;
- public:
- void sayHello( GtkWidget *widget, gpointer data );
- void popup ( GtkWidget *widget, gpointer data );
- MyFirstProgram(int argc, char *argv[]);
- };
- //
- // name: sayHello
- // description: Toggles between showing and hiding the main form.
- // @param GtkWidget, gpointer
- // @return void
- void MyFirstProgram::sayHello( GtkWidget *widget, gpointer data )
- {
- //system("./b.out");
- if(gtk_widget_get_visible(window))
- {
- gtk_widget_hide(window);
- gtk_menu_item_set_label(GTK_MENU_ITEM(menu_item1), "Restore");
- }
- else
- {
- gtk_window_reshow_with_initial_size (GTK_WINDOW(window) );
- gtk_menu_item_set_label(GTK_MENU_ITEM(menu_item1), "Hide");
- }
- }//end of sayHello
- void MyFirstProgram::popup (GtkWidget *widget, gpointer data)
- {
- gtk_menu_popup(GTK_MENU(tray_menu),NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
- }
- MyFirstProgram::MyFirstProgram(int argc, char *argv[])
- {
- //Initialise components
- gtk_init ( &argc, &argv);
- tray_icon = gtk_status_icon_new_from_file("./images/programicon.png");
- tray_menu = gtk_menu_new();
- menu_item1 = gtk_menu_item_new_with_label("Hide");
- menu_item2 = gtk_menu_item_new_with_label("About");
- menu_item3 = gtk_menu_item_new_with_label("Exit");
- menu_item_seperator = gtk_separator_menu_item_new ();
- button1 = gtk_button_new_with_label ("Button1 ");
- button2 = gtk_button_new_with_label ("My Second Button");
- window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
- label1 = gtk_label_new ("My First Label ");
- label2 = gtk_label_new ("My Second Label");
- vbox1 = gtk_vbox_new (TRUE, 10);
- hbox1 = gtk_hbox_new (TRUE, 10);
- hbox2 = gtk_hbox_new (TRUE, 10);
- value = TRUE;
- // Configure Components
- gtk_menu_attach(GTK_MENU(tray_menu), menu_item1, 0, 1, 0, 1);
- gtk_menu_attach(GTK_MENU(tray_menu), menu_item2, 0, 1, 1, 2);
- gtk_menu_attach(GTK_MENU(tray_menu), menu_item_seperator, 0, 1, 2, 3);
- gtk_menu_attach(GTK_MENU(tray_menu), menu_item3, 0, 1, 3, 4);
- gtk_status_icon_set_tooltip_text(tray_icon, PROGRAM_NAME);
- gtk_window_set_title (GTK_WINDOW(window),PROGRAM_NAME);
- gtk_window_set_position (GTK_WINDOW(window),GTK_WIN_POS_CENTER);
- gtk_window_set_default_size (GTK_WINDOW(window), 300, 100);
- gtk_window_set_icon_from_file(GTK_WINDOW(window), "./images/wiicontroler.png", NULL);
- //declare all events
- /* g_signal_connect (G_OBJECT (window), "destroy",
- G_CALLBACK (gtk_main_quit), NULL);
- g_signal_connect (G_OBJECT (window), "delete_event",
- G_CALLBACK (gtk_main_quit), NULL);
- g_signal_connect (G_OBJECT (button1), "clicked",
- G_CALLBACK (sayHello),this);
- g_signal_connect (G_OBJECT (button2), "clicked",
- G_CALLBACK (sayHello),NULL);
- g_signal_connect(G_OBJECT(tray_icon), "activate",
- G_CALLBACK(sayHello), NULL);
- g_signal_connect(G_OBJECT(tray_icon), "popup-menu",
- G_CALLBACK(popup), tray_menu);
- g_signal_connect(G_OBJECT(menu_item3), "activate",
- G_CALLBACK(gtk_main_quit), NULL);
- g_signal_connect(G_OBJECT(menu_item1), "activate",
- G_CALLBACK(sayHello), NULL);
- */
- //Configure Interface Layout
- gtk_container_set_border_width(GTK_CONTAINER(window),3);
- gtk_box_pack_start (GTK_BOX (hbox1), label1, TRUE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (hbox1), button1, TRUE, TRUE, 10);
- gtk_box_pack_start (GTK_BOX (hbox2), label2, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (hbox2), button2, FALSE, TRUE, 10);
- gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);
- gtk_box_pack_start (GTK_BOX (vbox1), hbox2, FALSE, FALSE, 0);
- gtk_container_add (GTK_CONTAINER (window),vbox1);
- //Display all widgets
- gtk_status_icon_set_visible(tray_icon, TRUE);
- gtk_widget_show (button2);
- gtk_widget_show (button1);
- gtk_widget_show (label1);
- gtk_widget_show (label2);
- gtk_widget_show (hbox1);
- gtk_widget_show (hbox2);
- gtk_widget_show (vbox1);
- gtk_widget_show (window);
- gtk_widget_show (tray_menu);
- gtk_widget_show (menu_item1);
- gtk_widget_show (menu_item2);
- gtk_widget_show (menu_item3);
- gtk_widget_show (menu_item_seperator);
- g_print("My First Program\n");
- gtk_main();
- //return 0;
- }//end of constructor
- int main(int argc, char *argv[])
- {
- MyFirstProgram myfirstprogram (argc, argv);
- return 0;
- }