Advertisement
Guest User

Untitled

a guest
Apr 29th, 2014
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.53 KB | None | 0 0
  1. #include <gtk/gtk.h>
  2. #include <libappindicator/app-indicator.h>
  3.  
  4. static void activate_action (GtkAction *action);
  5.  
  6. static GtkActionEntry entries[] = {
  7. { "FileMenu", NULL, "_File" },
  8. { "New", "document-new", "_New", "<control>N",
  9. "Create a new file", G_CALLBACK (activate_action) },
  10. { "Open", "document-open", "_Open", "<control>O",
  11. "Open a file", G_CALLBACK (activate_action) },
  12. { "Save", "document-save", "_Save", "<control>S",
  13. "Save file", G_CALLBACK (activate_action) },
  14. { "Quit", "application-exit", "_Quit", "<control>Q",
  15. "Exit the application", G_CALLBACK (gtk_main_quit) },
  16. };
  17. static guint n_entries = G_N_ELEMENTS (entries);
  18.  
  19. static const gchar *ui_info =
  20. "<ui>"
  21. " <menubar name='MenuBar'>"
  22. " <menu action='FileMenu'>"
  23. " <menuitem action='New'/>"
  24. " <menuitem action='Open'/>"
  25. " <menuitem action='Save'/>"
  26. " <separator/>"
  27. " <menuitem action='Quit'/>"
  28. " </menu>"
  29. " </menubar>"
  30. " <popup name='IndicatorPopup'>"
  31. " <menuitem action='New' />"
  32. " <menuitem action='Open' />"
  33. " <menuitem action='Save' />"
  34. " <menuitem action='Quit' />"
  35. " </popup>"
  36. "</ui>";
  37.  
  38. static void
  39. activate_action (GtkAction *action)
  40. {
  41. const gchar *name = gtk_action_get_name (action);
  42. GtkWidget *dialog;
  43.  
  44. dialog = gtk_message_dialog_new (NULL,
  45. GTK_DIALOG_DESTROY_WITH_PARENT,
  46. GTK_MESSAGE_INFO,
  47. GTK_BUTTONS_CLOSE,
  48. "You activated action: \"%s\"",
  49. name);
  50.  
  51. g_signal_connect (dialog, "response",
  52. G_CALLBACK (gtk_widget_destroy), NULL);
  53.  
  54. gtk_widget_show (dialog);
  55. }
  56.  
  57. int main (int argc, char **argv)
  58. {
  59. GtkWidget *window;
  60. GtkWidget *menubar;
  61. GtkWidget *table;
  62. GtkWidget *sw;
  63. GtkWidget *contents;
  64. GtkWidget *statusbar;
  65. GtkWidget *indicator_menu;
  66. GtkActionGroup *action_group;
  67. GtkUIManager *uim;
  68. AppIndicator *indicator;
  69. GError *error = NULL;
  70.  
  71. gtk_init (&argc, &argv);
  72.  
  73. /* main window */
  74. window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  75. gtk_window_set_title (GTK_WINDOW (window), "Indicator Demo");
  76. gtk_window_set_icon_name (GTK_WINDOW (window), "indicator-messages-new");
  77. g_signal_connect (G_OBJECT (window),
  78. "destroy",
  79. G_CALLBACK (gtk_main_quit),
  80. NULL);
  81.  
  82. table = gtk_table_new (1, 5, FALSE);
  83. gtk_container_add (GTK_CONTAINER (window), table);
  84.  
  85. /* Menus */
  86. action_group = gtk_action_group_new ("AppActions");
  87. gtk_action_group_add_actions (action_group,
  88. entries, n_entries,
  89. window);
  90.  
  91. uim = gtk_ui_manager_new ();
  92. g_object_set_data_full (G_OBJECT (window),
  93. "ui-manager", uim,
  94. g_object_unref);
  95. gtk_ui_manager_insert_action_group (uim, action_group, 0);
  96. gtk_window_add_accel_group (GTK_WINDOW (window),
  97. gtk_ui_manager_get_accel_group (uim));
  98.  
  99. if (!gtk_ui_manager_add_ui_from_string (uim, ui_info, -1, &error))
  100. {
  101. g_message ("Failed to build menus: %s\n", error->message);
  102. g_error_free (error);
  103. error = NULL;
  104. }
  105.  
  106. menubar = gtk_ui_manager_get_widget (uim, "/ui/MenuBar");
  107. gtk_widget_show (menubar);
  108. gtk_table_attach (GTK_TABLE (table),
  109. menubar,
  110. 0, 1, 0, 1,
  111. GTK_EXPAND | GTK_FILL, 0,
  112. 0, 0);
  113.  
  114. /* Document */
  115. sw = gtk_scrolled_window_new (NULL, NULL);
  116.  
  117. gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (sw),
  118. GTK_POLICY_AUTOMATIC,
  119. GTK_POLICY_AUTOMATIC);
  120.  
  121. gtk_scrolled_window_set_shadow_type (GTK_SCROLLED_WINDOW (sw),
  122. GTK_SHADOW_IN);
  123.  
  124. gtk_table_attach (GTK_TABLE (table),
  125. sw,
  126. /* X direction */ /* Y direction */
  127. 0, 1, 3, 4,
  128. GTK_EXPAND | GTK_FILL, GTK_EXPAND | GTK_FILL,
  129. 0, 0);
  130.  
  131. gtk_window_set_default_size (GTK_WINDOW (window),
  132. 200, 200);
  133.  
  134. contents = gtk_text_view_new ();
  135. gtk_widget_grab_focus (contents);
  136.  
  137. gtk_container_add (GTK_CONTAINER (sw),
  138. contents);
  139.  
  140.  
  141. /* Create statusbar */
  142. statusbar = gtk_statusbar_new ();
  143. gtk_table_attach (GTK_TABLE (table),
  144. statusbar,
  145. /* X direction */ /* Y direction */
  146. 0, 1, 4, 5,
  147. GTK_EXPAND | GTK_FILL, 0,
  148. 0, 0);
  149.  
  150. /* Show the window */
  151. gtk_widget_show_all (window);
  152.  
  153. /* Indicator */
  154. indicator = app_indicator_new ("example-simple-client",
  155. "indicator-messages",
  156. APP_INDICATOR_CATEGORY_APPLICATION_STATUS);
  157.  
  158. indicator_menu = gtk_ui_manager_get_widget (uim, "/ui/IndicatorPopup");
  159.  
  160. app_indicator_set_status (indicator, APP_INDICATOR_STATUS_ACTIVE);
  161. app_indicator_set_attention_icon (indicator, "indicator-messages-new");
  162.  
  163. app_indicator_set_menu (indicator, GTK_MENU (indicator_menu));
  164.  
  165. app_indicator_set_label(indicator, "L", "GUIDDDDDE");
  166.  
  167. gtk_main ();
  168.  
  169. return 0;
  170. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement