static void popup_menu (GtkStatusIcon *icon, guint button, guint32 activate_time) { GtkWidget *menu, *menuitem; menu = gtk_menu_new (); gtk_menu_set_screen (GTK_MENU (menu), gtk_status_icon_get_screen (icon)); menuitem = gtk_menu_item_new_with_label ("Quit"); g_signal_connect (menuitem, "activate", G_CALLBACK (do_quit), NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show (menuitem); menuitem = gtk_menu_item_new_with_label ("Exit abruptly"); g_signal_connect (menuitem, "activate", G_CALLBACK (do_exit), NULL); gtk_menu_shell_append (GTK_MENU_SHELL (menu), menuitem); gtk_widget_show (menuitem); gtk_menu_popup (GTK_MENU (menu), NULL, NULL, gtk_status_icon_position_menu, icon, button, activate_time); }
static void icon_activated (GtkStatusIcon *icon) { GtkWidget *content_area; GtkWidget *dialog; GtkWidget *toggle; dialog = g_object_get_data (G_OBJECT (icon), "test-status-icon-dialog"); if (dialog == NULL) { dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_QUESTION, GTK_BUTTONS_CLOSE, "You wanna test the status icon ?"); gtk_window_set_screen (GTK_WINDOW (dialog), gtk_status_icon_get_screen (icon)); gtk_window_set_position (GTK_WINDOW (dialog), GTK_WIN_POS_CENTER); g_object_set_data_full (G_OBJECT (icon), "test-status-icon-dialog", dialog, (GDestroyNotify) gtk_widget_destroy); g_signal_connect (dialog, "response", G_CALLBACK (gtk_widget_hide), NULL); g_signal_connect (dialog, "delete_event", G_CALLBACK (gtk_widget_hide_on_delete), NULL); content_area = gtk_dialog_get_content_area (GTK_DIALOG (dialog)); toggle = gtk_toggle_button_new_with_mnemonic ("_Show the icon"); gtk_box_pack_end (GTK_BOX (content_area), toggle, TRUE, TRUE, 6); gtk_widget_show (toggle); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), gtk_status_icon_get_visible (icon)); g_signal_connect (toggle, "toggled", G_CALLBACK (visible_toggle_toggled), NULL); toggle = gtk_toggle_button_new_with_mnemonic ("_Change images"); gtk_box_pack_end (GTK_BOX (content_area), toggle, TRUE, TRUE, 6); gtk_widget_show (toggle); gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (toggle), timeout != 0); g_signal_connect (toggle, "toggled", G_CALLBACK (timeout_toggle_toggled), NULL); } gtk_window_present (GTK_WINDOW (dialog)); }
static void screen_changed_cb (GtkStatusIcon *icon) { g_print ("status icon %p screen changed to %p\n", icon, gtk_status_icon_get_screen (icon)); }
static void on_help_activate(GtkAction *action, LassiTrayInfo *i) { lassi_help_open(gtk_status_icon_get_screen(i->status_icon), "mango-lassi", "intro"); }