/* Startup calls and initializations */ static void clipit_init() { /* Create clipboard */ primary = gtk_clipboard_get(GDK_SELECTION_PRIMARY); clipboard = gtk_clipboard_get(GDK_SELECTION_CLIPBOARD); g_timeout_add(CHECK_INTERVAL, item_check, NULL); /* Read preferences */ read_preferences(); /* Read history */ if (prefs.save_history) read_history(); /* Bind global keys */ keybinder_init(); keybinder_bind(prefs.history_key, history_hotkey, NULL); keybinder_bind(prefs.actions_key, actions_hotkey, NULL); keybinder_bind(prefs.menu_key, menu_hotkey, NULL); keybinder_bind(prefs.search_key, search_hotkey, NULL); keybinder_bind(prefs.offline_key, offline_hotkey, NULL); /* Create status icon */ if (!prefs.no_icon) { #ifdef HAVE_APPINDICATOR create_app_indicator(1); #else status_icon = gtk_status_icon_new_from_icon_name("clipit-trayicon"); gtk_status_icon_set_tooltip((GtkStatusIcon*)status_icon, _("Clipboard Manager")); g_signal_connect((GObject*)status_icon, "button_press_event", (GCallback)status_icon_clicked, NULL); #endif } }
int main(int argc, char *argv[]) { GtkWidget *item; GtkMenuShell *menu; gtk_init(&argc, &argv); /* Status icon */ status_icon = gtk_status_icon_new_from_icon_name(LOGO_ICON); gtk_status_icon_set_visible(status_icon, TRUE); g_signal_connect(G_OBJECT(status_icon), "button_press_event", G_CALLBACK(status_icon_on_button_press), NULL); /* App menu */ app_menu = gtk_menu_new(); menu = GTK_MENU_SHELL(app_menu); /* Story items */ for (guint i = 0; i < MAX_STORIES; i++) { menu_init_item(&stories[i]); } /* Settings menu */ settings_menu = gtk_menu_new(); menu = GTK_MENU_SHELL(settings_menu); /* Refresh */ item = gtk_menu_item_new_with_mnemonic(_("_Refresh")); gpointer immediate = GINT_TO_POINTER(FALSE); g_signal_connect(item, "activate", G_CALLBACK(refresh_stories), immediate); gtk_menu_shell_append(menu, item); gtk_menu_shell_append(menu, gtk_separator_menu_item_new()); /* About */ item = gtk_menu_item_new_with_mnemonic(_("_About")); g_signal_connect(item, "activate", G_CALLBACK(menu_on_about), NULL); gtk_menu_shell_append(menu, item); /* Quit */ item = gtk_menu_item_new_with_mnemonic(_("_Quit")); g_signal_connect(item, "activate", G_CALLBACK(gtk_main_quit), NULL); gtk_menu_shell_append(menu, item); gtk_widget_show_all(app_menu); gtk_widget_show_all(settings_menu); if (!(gmulticurl = gmulticurl_new())) g_warning("gmulticurl init error"); gtk_main(); if (gmulticurl_cleanup(gmulticurl)) g_warning("gmulticurl init error"); return 0; }
void remmina_icon_init(void) { if (!remmina_icon.icon && !remmina_pref.disable_tray_icon) { #ifdef HAVE_LIBAPPINDICATOR remmina_icon.icon = app_indicator_new ("remmina-icon", "remmina", APP_INDICATOR_CATEGORY_OTHER); app_indicator_set_icon_theme_path (remmina_icon.icon, REMMINA_DATADIR G_DIR_SEPARATOR_S "icons"); app_indicator_set_status (remmina_icon.icon, APP_INDICATOR_STATUS_ACTIVE); app_indicator_set_title (remmina_icon.icon, "Remmina"); remmina_icon_populate_menu (); #else remmina_icon.icon = gtk_status_icon_new_from_icon_name("remmina"); gtk_status_icon_set_title(remmina_icon.icon, _("Remmina Remote Desktop Client")); gtk_status_icon_set_tooltip_text(remmina_icon.icon, _("Remmina Remote Desktop Client")); g_signal_connect(G_OBJECT(remmina_icon.icon), "popup-menu", G_CALLBACK(remmina_icon_on_popup_menu), NULL); g_signal_connect(G_OBJECT(remmina_icon.icon), "activate", G_CALLBACK(remmina_icon_on_activate), NULL); #endif remmina_widget_pool_hold(TRUE); } else if (remmina_icon.icon) { #ifdef HAVE_LIBAPPINDICATOR app_indicator_set_status (remmina_icon.icon, remmina_pref.disable_tray_icon ? APP_INDICATOR_STATUS_PASSIVE : APP_INDICATOR_STATUS_ACTIVE); #else gtk_status_icon_set_visible(remmina_icon.icon, !remmina_pref.disable_tray_icon); #endif remmina_widget_pool_hold(!remmina_pref.disable_tray_icon); } if (!remmina_icon.avahi) { remmina_icon.avahi = remmina_avahi_new(); } if (remmina_icon.avahi) { if (remmina_pref.applet_enable_avahi) { if (!remmina_icon.avahi->started) remmina_avahi_start(remmina_icon.avahi); } else { remmina_avahi_stop(remmina_icon.avahi); } } if (!remmina_icon.autostart_file) { remmina_icon.autostart_file = g_strdup_printf("%s/.config/autostart/remmina-applet.desktop", g_get_home_dir()); remmina_icon_create_autostart_file(); } }
int main(void) { gtk_init(0, 0); // Status icon GtkStatusIcon *status_icon = gtk_status_icon_new_from_icon_name("exit"); g_signal_connect(status_icon, "button-press-event", G_CALLBACK(on_button_press), 0); // main loop gtk_main(); return 0; }
static GtkStatusIcon *si_create(void) { GtkStatusIcon *icon; GtkIconTheme *theme; theme = gtk_icon_theme_get_default(); if (gtk_icon_theme_has_icon(theme, "audacious-panel")) icon = gtk_status_icon_new_from_icon_name("audacious-panel"); else if (gtk_icon_theme_has_icon(theme, "audacious")) icon = gtk_status_icon_new_from_icon_name("audacious"); else { gchar * path = g_strdup_printf ("%s/images/audacious.png", aud_get_path (AUD_PATH_DATA_DIR)); icon = gtk_status_icon_new_from_file (path); g_free (path); } return icon; }
void display_status_icon () { status_icon = gtk_status_icon_new_from_icon_name ("fortuner"); gtk_status_icon_set_visible (status_icon, TRUE); gtk_status_icon_set_tooltip_text (status_icon, "Fortuner"); // Connect signals g_signal_connect (G_OBJECT (status_icon), "popup-menu", G_CALLBACK (popup_menu), NULL); g_signal_connect (G_OBJECT (status_icon), "activate", G_CALLBACK (activate), NULL); }
static void thunar_progress_dialog_shown (ThunarProgressDialog *dialog) { _thunar_return_if_fail (THUNAR_IS_PROGRESS_DIALOG (dialog)); /* show the status icon */ if (dialog->status_icon == NULL) { dialog->status_icon = gtk_status_icon_new_from_icon_name ("stock_folder-copy"); thunar_progress_dialog_update_status_icon (dialog); g_signal_connect_swapped (dialog->status_icon, "button-press-event", G_CALLBACK (thunar_progress_dialog_toggled), GTK_WIDGET (dialog)); } }
GtkStatusIcon *init_notification(void) { notify_init("bluetooth-manager"); statusicon = gtk_status_icon_new_from_icon_name(icon_name); gtk_status_icon_set_title (GTK_STATUS_ICON (statusicon), _("Bluetooth")); gtk_status_icon_set_tooltip_markup(statusicon, tooltip); /* XXX: Make sure the status icon is actually shown */ gtk_status_icon_set_visible(statusicon, FALSE); gtk_status_icon_set_visible(statusicon, TRUE); return statusicon; }
int main(int argc, char *argv[]) { GtkWidget *item; GtkMenuShell *menu; GError *error = NULL; if (!gtk_init_with_args(&argc, &argv, NULL, NULL, NULL, &error)) { fprintf(stderr, "gtk init: %s\n", error->message); g_error_free(error); return 1; } /* Status icon */ status_icon = gtk_status_icon_new_from_icon_name(LOGO_ICON); gtk_status_icon_set_visible(status_icon, TRUE); g_signal_connect(G_OBJECT(status_icon), "button_press_event", G_CALLBACK(status_icon_on_button_press), NULL); /* App menu */ app_menu = gtk_menu_new(); menu = GTK_MENU_SHELL(app_menu); /* Settings menu */ settings_menu = gtk_menu_new(); menu = GTK_MENU_SHELL(settings_menu); /* About */ item = gtk_menu_item_new_with_mnemonic(_("_About")); g_signal_connect(item, "activate", G_CALLBACK(menu_on_about), NULL); gtk_menu_shell_append(menu, item); /* Quit */ item = gtk_menu_item_new_with_mnemonic(_("_Quit")); g_signal_connect(item, "activate", G_CALLBACK(menu_on_quit), NULL); gtk_menu_shell_append(menu, item); init_xcb(); gtk_widget_show_all(app_menu); gtk_widget_show_all(settings_menu); gtk_main(); return 0; }
static GtkWidget * get_progress_window (void) { static GtkWidget *progress_window = NULL; GtkWidget *vbox; if (progress_window != NULL) { return progress_window; } progress_window = gtk_window_new (GTK_WINDOW_TOPLEVEL); gtk_window_set_resizable (GTK_WINDOW (progress_window), FALSE); gtk_container_set_border_width (GTK_CONTAINER (progress_window), 10); gtk_window_set_title (GTK_WINDOW (progress_window), _("File Operations")); gtk_window_set_wmclass (GTK_WINDOW (progress_window), "file_progress", "Caja"); gtk_window_set_position (GTK_WINDOW (progress_window), GTK_WIN_POS_CENTER); gtk_window_set_icon_name (GTK_WINDOW (progress_window), "system-file-manager"); vbox = gtk_vbox_new (FALSE, 0); gtk_box_set_spacing (GTK_BOX (vbox), 5); gtk_container_add (GTK_CONTAINER (progress_window), vbox); gtk_widget_show_all (progress_window); g_signal_connect (progress_window, "delete_event", (GCallback)delete_event, NULL); status_icon = gtk_status_icon_new_from_icon_name ("system-file-manager"); g_signal_connect (status_icon, "activate", (GCallback)status_icon_activate_cb, progress_window); gtk_status_icon_set_visible (status_icon, FALSE); return progress_window; }
int main(int argc, char *argv[]) { DHCPCD_CONNECTION *con; setlocale(LC_ALL, ""); bindtextdomain(PACKAGE, NULL); bind_textdomain_codeset(PACKAGE, "UTF-8"); textdomain(PACKAGE); gtk_init(&argc, &argv); g_set_application_name("Network Configurator"); gtk_icon_theme_append_search_path(gtk_icon_theme_get_default(), ICONDIR); status_icon = gtk_status_icon_new_from_icon_name("network-offline"); gtk_status_icon_set_tooltip_text(status_icon, _("Connecting to dhcpcd ...")); gtk_status_icon_set_visible(status_icon, true); online = false; #ifdef NOTIFY notify_init(PACKAGE); #endif g_message(_("Connecting ...")); con = dhcpcd_new(); if (con == NULL) { g_critical("libdhcpcd: %s", strerror(errno)); exit(EXIT_FAILURE); } dhcpcd_set_progname(con, "dhcpcd-gtk"); dhcpcd_set_status_callback(con, dhcpcd_status_cb, NULL); dhcpcd_set_if_callback(con, dhcpcd_if_cb, NULL); dhcpcd_wpa_set_scan_callback(con, dhcpcd_wpa_scan_cb, NULL); //dhcpcd_wpa_set_status_callback(con, dhcpcd_wpa_status_cb, NULL); if (dhcpcd_try_open(con)) g_timeout_add(DHCPCD_RETRYOPEN, dhcpcd_try_open, con); menu_init(status_icon, con); gtk_main(); dhcpcd_close(con); dhcpcd_free(con); return 0; }
static void progress_ui_handler_ensure_status_icon (NemoProgressUIHandler *self) { GtkStatusIcon *status_icon; if (self->priv->status_icon != NULL) { return; } status_icon = gtk_status_icon_new_from_icon_name ("progress-0-symbolic"); g_signal_connect (status_icon, "button-release-event", (GCallback) status_icon_button_release_cb, self); gtk_status_icon_set_visible (status_icon, FALSE); self->priv->status_icon = status_icon; }
int main (int argc, char *argv[]) { #ifdef ENABLE_NLS bindtextdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR); bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); textdomain (GETTEXT_PACKAGE); #endif gtk_init (&argc, &argv); g_set_application_name (_("Task Manager")); settings = xtm_settings_get_default (); status_icon = gtk_status_icon_new_from_icon_name ("utilities-system-monitor"); show_hide_status_icon (); g_signal_connect (status_icon, "activate", G_CALLBACK (status_icon_activated), NULL); g_signal_connect (status_icon, "popup-menu", G_CALLBACK (status_icon_popup_menu), NULL); window = xtm_process_window_new (); gtk_widget_show (window); task_manager = xtm_task_manager_new (xtm_process_window_get_model (XTM_PROCESS_WINDOW (window))); g_message ("Running as %s on %s", xtm_task_manager_get_username (task_manager), xtm_task_manager_get_hostname (task_manager)); init_timeout (); g_signal_connect (settings, "notify::refresh-rate", G_CALLBACK (refresh_rate_changed), NULL); g_signal_connect_after (settings, "notify::more-precision", G_CALLBACK (force_timeout_update), NULL); g_signal_connect_after (settings, "notify::full-command-line", G_CALLBACK (force_timeout_update), NULL); g_signal_connect (settings, "notify::show-status-icon", G_CALLBACK (show_hide_status_icon), NULL); g_signal_connect (window, "destroy", G_CALLBACK (destroy_window), NULL); g_signal_connect (window, "delete-event", G_CALLBACK (delete_window), NULL); gtk_main (); if (timeout > 0) g_source_remove (timeout); g_object_unref (window); g_object_unref (status_icon); g_object_unref (task_manager); g_object_unref (settings); return 0; }
/* Creates the singleton status icon object. Subsequent calls will return the same status icon object. */ GtkStatusIcon * get_status_icon () { static GtkStatusIcon *status_icon = NULL; if (status_icon == NULL) { status_icon = gtk_status_icon_new_from_icon_name ("gtk-feed"); g_signal_connect (status_icon, "activate", G_CALLBACK(on_icon_activate), NULL); g_signal_connect (status_icon, "popup-menu", G_CALLBACK(on_icon_popup_menu), NULL); } return status_icon; }
void gnac_ui_show_trayicon(void) { if (!gnac_settings_ui_get_boolean(GNAC_KEY_TRAY_ICON)) return; GtkWidget *main_window = gnac_ui_get_widget("main_window"); if (!trayicon) { trayicon = gtk_status_icon_new_from_icon_name("gnac"); gtk_status_icon_set_has_tooltip(trayicon, TRUE); g_signal_connect(G_OBJECT(trayicon), "query-tooltip", G_CALLBACK(gnac_ui_query_tooltip_cb), NULL); g_signal_connect(G_OBJECT(trayicon), "activate", G_CALLBACK(gnac_ui_on_trayicon), NULL); g_signal_connect(G_OBJECT(trayicon), "popup-menu", G_CALLBACK(gnac_ui_on_trayicon_popup), NULL); } gtk_window_get_position(GTK_WINDOW(main_window), &root_x, &root_y); gtk_status_icon_set_visible(trayicon, TRUE); }
static void *gtk_thread(void *arg) { struct gtk_mod *mod = arg; GtkMenuShell *app_menu; GtkWidget *item; GError *err = NULL; struct le *le; gdk_threads_init(); gtk_init(0, NULL); g_set_application_name("baresip"); mod->app = g_application_new ("com.creytiv.baresip", G_APPLICATION_FLAGS_NONE); g_application_register (G_APPLICATION (mod->app), NULL, &err); if (err != NULL) { warning ("Unable to register GApplication: %s", err->message); g_error_free (err); err = NULL; } #ifdef USE_LIBNOTIFY notify_init("baresip"); #endif mod->status_icon = gtk_status_icon_new_from_icon_name("call-start"); gtk_status_icon_set_tooltip_text (mod->status_icon, "baresip"); g_signal_connect(G_OBJECT(mod->status_icon), "button_press_event", G_CALLBACK(status_icon_on_button_press), mod); gtk_status_icon_set_visible(mod->status_icon, TRUE); mod->contacts_inited = false; mod->dial_dialog = NULL; mod->call_windows = NULL; mod->incoming_call_menus = NULL; /* App menu */ mod->app_menu = gtk_menu_new(); app_menu = GTK_MENU_SHELL(mod->app_menu); /* Account submenu */ mod->accounts_menu = gtk_menu_new(); mod->accounts_menu_group = NULL; item = gtk_menu_item_new_with_mnemonic("_Account"); gtk_menu_shell_append(app_menu, item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), mod->accounts_menu); /* Add accounts to submenu */ for (le = list_head(uag_list()); le; le = le->next) { struct ua *ua = le->data; accounts_menu_add_item(mod, ua); } /* Status submenu */ mod->status_menu = gtk_menu_new(); item = gtk_menu_item_new_with_mnemonic("_Status"); gtk_menu_shell_append(GTK_MENU_SHELL(app_menu), item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), mod->status_menu); /* Open */ item = gtk_radio_menu_item_new_with_label(NULL, "Open"); g_object_set_data(G_OBJECT(item), "presence", GINT_TO_POINTER(PRESENCE_OPEN)); g_signal_connect(item, "activate", G_CALLBACK(menu_on_presence_set), mod); gtk_menu_shell_append(GTK_MENU_SHELL(mod->status_menu), item); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), TRUE); /* Closed */ item = gtk_radio_menu_item_new_with_label_from_widget( GTK_RADIO_MENU_ITEM(item), "Closed"); g_object_set_data(G_OBJECT(item), "presence", GINT_TO_POINTER(PRESENCE_CLOSED)); g_signal_connect(item, "activate", G_CALLBACK(menu_on_presence_set), mod); gtk_menu_shell_append(GTK_MENU_SHELL(mod->status_menu), item); gtk_menu_shell_append(app_menu, gtk_separator_menu_item_new()); /* Dial */ item = gtk_menu_item_new_with_mnemonic("_Dial..."); gtk_menu_shell_append(app_menu, item); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(menu_on_dial), mod); /* Dial contact */ mod->contacts_menu = gtk_menu_new(); item = gtk_menu_item_new_with_mnemonic("Dial _contact"); gtk_menu_shell_append(app_menu, item); gtk_menu_item_set_submenu(GTK_MENU_ITEM(item), mod->contacts_menu); gtk_menu_shell_append(app_menu, gtk_separator_menu_item_new()); /* About */ item = gtk_menu_item_new_with_mnemonic("A_bout"); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(menu_on_about), mod); gtk_menu_shell_append(app_menu, item); gtk_menu_shell_append(app_menu, gtk_separator_menu_item_new()); /* Quit */ item = gtk_menu_item_new_with_mnemonic("_Quit"); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(menu_on_quit), mod); gtk_menu_shell_append(app_menu, item); g_action_map_add_action_entries(G_ACTION_MAP(mod->app), app_entries, G_N_ELEMENTS(app_entries), mod); info("gtk_menu starting\n"); uag_event_register( ua_event_handler, mod ); mod->run = true; gtk_main(); mod->run = false; uag_event_unregister(ua_event_handler); if (mod->dial_dialog) { mem_deref(mod->dial_dialog); mod->dial_dialog = NULL; } return NULL; }
void create_main_window () { window = gtk_window_new (GTK_WINDOW_TOPLEVEL); GtkUIManager *ui_manager = gtk_ui_manager_new (); GtkActionGroup *action_group = create_action_group (); GError *error = NULL; gchar *ui_path = rookie_misc_get_ui_path ("AppUI.ui"); gtk_ui_manager_insert_action_group (ui_manager, action_group, 0); gtk_ui_manager_add_ui_from_file (ui_manager, ui_path, &error); handle_critical_error (error); g_free (ui_path); eggicon = gtk_status_icon_new_from_icon_name ("rookie"); init_actions (action_group); menubar = gtk_ui_manager_get_widget (ui_manager, "/menubar"); toolbar = gtk_ui_manager_get_widget (ui_manager, "/toolbar"); statbar = create_statusbar (); mainbox = gtk_vbox_new (FALSE, 0); mainpopup = gtk_ui_manager_get_widget (ui_manager, "/m_popup"); viewpopup = gtk_ui_manager_get_widget (ui_manager, "/v_popup"); statpopup = gtk_ui_manager_get_widget (ui_manager, "/s_popup"); gtk_toolbar_set_icon_size (GTK_TOOLBAR(toolbar), GTK_ICON_SIZE_LARGE_TOOLBAR); gtk_toolbar_set_style (GTK_TOOLBAR(toolbar), GTK_TOOLBAR_BOTH); sw1 = gtk_scrolled_window_new (NULL, NULL); sw2 = gtk_scrolled_window_new (NULL, NULL); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw1), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW(sw2), GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); sidepane = create_sidepane (); gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW(sw1), sidepane); view = g_download_list_controller_get_view (); gtk_container_add (GTK_CONTAINER (sw2), view); bottompane = create_bottom_pane (); vpaned = gtk_vpaned_new (); gtk_paned_add1 (GTK_PANED(vpaned), sw2); gtk_paned_add2 (GTK_PANED(vpaned), bottompane); hpaned = gtk_hpaned_new (); gtk_paned_add1 (GTK_PANED(hpaned), sw1); gtk_paned_add2 (GTK_PANED(hpaned), vpaned); gtk_paned_set_position (GTK_PANED(hpaned), rookie_settings_get_sidepane_width ()); gtk_paned_set_position (GTK_PANED(vpaned), rookie_settings_get_bottompane_width ()); gtk_window_add_accel_group (GTK_WINDOW(window), gtk_ui_manager_get_accel_group(ui_manager)); gtk_window_set_title (GTK_WINDOW(window), _("Rookie Download Manager")); gtk_window_set_icon_name (GTK_WINDOW(window), "rookie"); gtk_box_pack_start (GTK_BOX(mainbox), menubar, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(mainbox), toolbar, FALSE, FALSE, 0); gtk_box_pack_start (GTK_BOX(mainbox), hpaned, TRUE, TRUE, 0); gtk_box_pack_end (GTK_BOX(mainbox), statbar, FALSE, FALSE, 0); relayout_mainbox (); gtk_container_add (GTK_CONTAINER(window), mainbox); gtk_window_set_geometry_hints (GTK_WINDOW (window), window, NULL, GDK_HINT_USER_SIZE | GDK_HINT_USER_POS | GDK_HINT_POS); gtk_window_resize (GTK_WINDOW(window), rookie_settings_get_window_width (), rookie_settings_get_window_height()); rookie_settings_bind (ROOKIE_TOOLBAR_VISIBLE, toolbar, "visible"); rookie_settings_bind (ROOKIE_STATUSBAR_VISIBLE, statbar, "visible"); /* Signals */ selection = gtk_tree_view_get_selection (GTK_TREE_VIEW(view)); g_download_list_foreach ((GFunc)g_downloadable_connect_signals, NULL); g_signal_connect (eggicon, "activate", G_CALLBACK(on_egg_icon_activate), NULL); g_signal_connect (eggicon, "popup-menu", G_CALLBACK(on_egg_icon_popup_menu), NULL); g_signal_connect (window, "delete-event", G_CALLBACK(on_window_delete), NULL); g_signal_connect (g_download_list_get (), "download-added", G_CALLBACK (on_download_added), NULL); g_signal_connect (g_download_list_get (), "download-removed", G_CALLBACK (on_download_removed), NULL); g_signal_connect (view, "button-press-event", G_CALLBACK(on_view_button_press), selection); g_signal_connect (selection, "changed", G_CALLBACK(on_selection_change), NULL); }
int lassi_tray_init(LassiTrayInfo *i, LassiServer *server) { GtkActionEntry entries[] = { #if GTK_CHECK_VERSION(2,14,0) {"Help", GTK_STOCK_HELP, NULL, NULL, NULL, G_CALLBACK (on_help_activate)}, #endif {"Preferences", GTK_STOCK_PREFERENCES, NULL, NULL, NULL, G_CALLBACK (on_prefs_activate)}, {"Quit", GTK_STOCK_QUIT, NULL, NULL, NULL, G_CALLBACK (gtk_main_quit)} }; GtkActionGroup *actions; GError *error = NULL; g_assert(i); g_assert(server); memset(i, 0, sizeof(*i)); i->server = server; notify_init("Mango Lassi"); i->status_icon = gtk_status_icon_new_from_icon_name(ICON_IDLE); i->ui_manager = gtk_ui_manager_new (); actions = gtk_action_group_new ("mango-lassi-popup"); gtk_action_group_add_actions (actions, entries, G_N_ELEMENTS (entries), i); gtk_ui_manager_insert_action_group (i->ui_manager, actions, -1); gtk_ui_manager_add_ui_from_string (i->ui_manager, "<popup>" "<menuitem action='Preferences'/>" #if GTK_CHECK_VERSION(2,14,0) "<menuitem action='Help'/>" #endif "<separator />" "<menuitem action='Quit'/>" "</popup>", -1, &error); if (error) { GtkWidget* dialog = gtk_message_dialog_new (NULL, 0, GTK_MESSAGE_ERROR, GTK_BUTTONS_CLOSE, "%s", _("Initialization Error")); gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog), _("Cannot initialize the user interface: %s"), error->message); g_error_free (error); gtk_dialog_run (GTK_DIALOG (dialog)); gtk_widget_destroy (dialog); return 1; } i->menu = gtk_ui_manager_get_widget (i->ui_manager, "/ui/popup"); g_signal_connect(G_OBJECT(i->status_icon), "popup_menu", G_CALLBACK(on_tray_popup_menu), i); g_signal_connect(G_OBJECT(i->status_icon), "activate", G_CALLBACK(on_tray_activate), i); lassi_tray_update(i, 0); return 0; }