Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 15th, 2012  |  syntax: None  |  size: 4.88 KB  |  hits: 11  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1.  
  2. #include <gtk/gtk.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5.  
  6.  
  7. #define PROGRAM_NAME "myfirstprogram"
  8.  
  9. class MyFirstProgram
  10. {
  11.  
  12.         GtkWidget *window;
  13.         GtkWidget *button1;
  14.         GtkWidget *button2;
  15.         GtkWidget *button3;
  16.         GtkWidget *button4;
  17.  
  18.         GtkWidget *tray_menu;
  19.  
  20.         GtkWidget *menu_item1;
  21.         GtkWidget *menu_item2;
  22.         GtkWidget *menu_item3;
  23.         GtkWidget *menu_item4;
  24.         GtkWidget *menu_item_seperator;
  25.  
  26.  
  27.  
  28.  
  29.         GtkWidget *label1;
  30.         GtkWidget *label2;
  31.         GtkWidget *vbox1;
  32.         GtkWidget *hbox1;
  33.         GtkWidget *hbox2;
  34.  
  35.         GtkStatusIcon *tray_icon;
  36.  
  37.         bool value;
  38.  
  39.   public:
  40.      void sayHello( GtkWidget *widget, gpointer data );
  41.      void popup ( GtkWidget *widget, gpointer data );
  42.     MyFirstProgram(int argc, char *argv[]);
  43. };
  44.  
  45.  
  46.  
  47.  
  48. //
  49. // name: sayHello
  50. // description: Toggles between showing and hiding the main form.
  51. // @param GtkWidget, gpointer
  52. // @return void
  53.   void MyFirstProgram::sayHello( GtkWidget *widget, gpointer data )
  54. {
  55.         //system("./b.out");
  56.                
  57.         if(gtk_widget_get_visible(window))
  58.         {
  59.                 gtk_widget_hide(window);
  60.                 gtk_menu_item_set_label(GTK_MENU_ITEM(menu_item1), "Restore");
  61.         }
  62.         else
  63.         {
  64.                 gtk_window_reshow_with_initial_size (GTK_WINDOW(window) );
  65.                 gtk_menu_item_set_label(GTK_MENU_ITEM(menu_item1), "Hide");
  66.         }
  67.        
  68. }//end of sayHello
  69.  
  70.  
  71.  
  72.  void MyFirstProgram::popup (GtkWidget *widget, gpointer data)
  73. {
  74.                 gtk_menu_popup(GTK_MENU(tray_menu),NULL, NULL, NULL, NULL, 0, gtk_get_current_event_time());
  75.  
  76. }
  77.  
  78.  
  79.  
  80.  
  81. MyFirstProgram::MyFirstProgram(int argc, char *argv[])
  82. {
  83.  
  84. //Initialise components
  85.         gtk_init ( &argc, &argv);
  86.        
  87.         tray_icon = gtk_status_icon_new_from_file("./images/programicon.png");
  88.         tray_menu = gtk_menu_new();
  89.         menu_item1 = gtk_menu_item_new_with_label("Hide");
  90.         menu_item2 = gtk_menu_item_new_with_label("About");
  91.         menu_item3 = gtk_menu_item_new_with_label("Exit");
  92.         menu_item_seperator = gtk_separator_menu_item_new  ();
  93.        
  94.         button1 = gtk_button_new_with_label ("Button1 ");
  95.         button2 = gtk_button_new_with_label ("My Second Button");
  96.         window  = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  97.        
  98.         label1  = gtk_label_new ("My First Label ");
  99.         label2  = gtk_label_new ("My Second Label");
  100.        
  101.         vbox1   = gtk_vbox_new (TRUE, 10);
  102.         hbox1   = gtk_hbox_new (TRUE, 10);
  103.         hbox2   = gtk_hbox_new (TRUE, 10);
  104.  
  105.         value = TRUE;
  106.                
  107.        
  108.        
  109.  
  110. // Configure Components
  111.  
  112.  
  113.         gtk_menu_attach(GTK_MENU(tray_menu), menu_item1, 0, 1, 0, 1);
  114.         gtk_menu_attach(GTK_MENU(tray_menu), menu_item2, 0, 1, 1, 2);
  115.         gtk_menu_attach(GTK_MENU(tray_menu),    menu_item_seperator, 0, 1, 2, 3);
  116.  
  117.         gtk_menu_attach(GTK_MENU(tray_menu), menu_item3, 0, 1, 3, 4);
  118.  
  119.        
  120.         gtk_status_icon_set_tooltip_text(tray_icon, PROGRAM_NAME);
  121.  
  122.         gtk_window_set_title (GTK_WINDOW(window),PROGRAM_NAME);
  123.         gtk_window_set_position (GTK_WINDOW(window),GTK_WIN_POS_CENTER);
  124.         gtk_window_set_default_size (GTK_WINDOW(window), 300, 100);
  125.         gtk_window_set_icon_from_file(GTK_WINDOW(window), "./images/wiicontroler.png", NULL);
  126.  
  127.  
  128. //declare all events
  129. /*      g_signal_connect (G_OBJECT (window), "destroy",
  130.                                           G_CALLBACK (gtk_main_quit), NULL);
  131.  
  132.  
  133.         g_signal_connect (G_OBJECT (window), "delete_event",
  134.                                           G_CALLBACK (gtk_main_quit), NULL);
  135.  
  136.  
  137.         g_signal_connect (G_OBJECT (button1), "clicked",
  138.                                           G_CALLBACK (sayHello),this);
  139.  
  140.         g_signal_connect (G_OBJECT (button2), "clicked",
  141.                                           G_CALLBACK (sayHello),NULL);         
  142.                                                                          
  143.                                                                          
  144.         g_signal_connect(G_OBJECT(tray_icon), "activate",
  145.                                          G_CALLBACK(sayHello), NULL);
  146.                                          
  147.                                          
  148.         g_signal_connect(G_OBJECT(tray_icon), "popup-menu",
  149.                                          G_CALLBACK(popup), tray_menu);
  150.  
  151.  
  152.         g_signal_connect(G_OBJECT(menu_item3), "activate",
  153.                                          G_CALLBACK(gtk_main_quit), NULL);
  154.  
  155.  
  156.         g_signal_connect(G_OBJECT(menu_item1), "activate",
  157.                                          G_CALLBACK(sayHello), NULL);
  158.  
  159. */
  160.  
  161. //Configure Interface Layout
  162.         gtk_container_set_border_width(GTK_CONTAINER(window),3);
  163.        
  164.         gtk_box_pack_start (GTK_BOX (hbox1), label1, TRUE, FALSE, 0);
  165.         gtk_box_pack_start (GTK_BOX (hbox1), button1, TRUE, TRUE, 10);
  166.        
  167.         gtk_box_pack_start (GTK_BOX (hbox2), label2, FALSE, FALSE, 0);
  168.         gtk_box_pack_start (GTK_BOX (hbox2), button2, FALSE, TRUE, 10);
  169.        
  170.         gtk_box_pack_start (GTK_BOX (vbox1), hbox1, FALSE, FALSE, 0);  
  171.         gtk_box_pack_start (GTK_BOX (vbox1), hbox2, FALSE, FALSE, 0);
  172.        
  173.         gtk_container_add (GTK_CONTAINER (window),vbox1);
  174.  
  175.  
  176. //Display all widgets
  177.         gtk_status_icon_set_visible(tray_icon, TRUE);
  178.  
  179.  
  180.         gtk_widget_show (button2);
  181.         gtk_widget_show (button1);
  182.         gtk_widget_show (label1);
  183.         gtk_widget_show (label2);
  184.         gtk_widget_show (hbox1);
  185.         gtk_widget_show (hbox2);
  186.         gtk_widget_show (vbox1);
  187.         gtk_widget_show (window);
  188.         gtk_widget_show (tray_menu);
  189.        
  190.         gtk_widget_show (menu_item1);
  191.         gtk_widget_show (menu_item2);
  192.         gtk_widget_show (menu_item3);
  193.         gtk_widget_show (menu_item_seperator);
  194.        
  195.         g_print("My First Program\n");
  196.  
  197.         gtk_main();
  198.  
  199.         //return 0;
  200. }//end of constructor
  201.  
  202. int main(int argc, char *argv[])
  203. {
  204.         MyFirstProgram myfirstprogram (argc, argv);
  205.        
  206.         return 0;
  207. }