GtkWidget *show_refresh_item (XfcePanelPlugin *plugin) { GtkWidget *refresh; refresh = gtk_image_menu_item_new_from_stock (GTK_STOCK_REFRESH, NULL); xfce_panel_plugin_menu_insert_item(plugin, GTK_MENU_ITEM(refresh)); gtk_widget_show(GTK_WIDGET(refresh)); return refresh; }
static void xfce_xkb_construct (XfcePanelPlugin *plugin) { GtkWidget *configure_layouts; GtkIconTheme *theme; GtkWidget *image; GdkPixbuf *pixbuf; t_xkb *xkb = xkb_new (plugin); xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); xfce_panel_plugin_set_small (plugin, TRUE); g_signal_connect (plugin, "orientation-changed", G_CALLBACK (xfce_xkb_orientation_changed), xkb); g_signal_connect (plugin, "size-changed", G_CALLBACK (xfce_xkb_set_size), xkb); g_signal_connect (plugin, "free-data", G_CALLBACK (xfce_xkb_free_data), xkb); g_signal_connect (plugin, "save", G_CALLBACK (xfce_xkb_save_config), xkb); xfce_panel_plugin_menu_show_configure (plugin); g_signal_connect (plugin, "configure-plugin", G_CALLBACK (xfce_xkb_configure), xkb); xfce_panel_plugin_menu_show_about (plugin); g_signal_connect (plugin, "about", G_CALLBACK (xfce_xkb_about), xkb); configure_layouts = gtk_menu_item_new_with_label (_("Keyboard settings")); theme = gtk_icon_theme_get_for_screen (gdk_screen_get_default()); pixbuf = gtk_icon_theme_load_icon (theme, "preferences-desktop-keyboard", GTK_ICON_SIZE_MENU, 0, NULL); if (pixbuf != NULL) { image = gtk_image_new (); gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (configure_layouts), image); g_object_unref (pixbuf); } gtk_widget_show (configure_layouts); xfce_panel_plugin_menu_insert_item (plugin, GTK_MENU_ITEM (configure_layouts)); g_signal_connect (G_OBJECT (configure_layouts), "activate", G_CALLBACK (xfce_xkb_configure_layout), NULL); }
static void xfce_constructor (XfcePanelPlugin *plugin) { MultiloadPlugin *multiload = multiload_new(); multiload->panel_data = plugin; multiload->panel_orientation = xfce_panel_plugin_get_orientation (plugin); gtk_container_add (GTK_CONTAINER (plugin), GTK_WIDGET(multiload->container)); multiload_ui_read (multiload); multiload_start(multiload); /* show the panel's right-click menu on this ebox */ xfce_panel_plugin_add_action_widget (plugin, GTK_WIDGET(multiload->container)); /* plugin signals */ g_signal_connect(G_OBJECT(plugin), "free-data", G_CALLBACK (xfce_free_cb), multiload); g_signal_connect(G_OBJECT(plugin), "save", G_CALLBACK (xfce_save_cb), multiload); g_signal_connect(G_OBJECT(plugin), "size-changed", G_CALLBACK (xfce_size_changed_cb), multiload); g_signal_connect(G_OBJECT(plugin), "orientation-changed", G_CALLBACK (xfce_orientation_changed_cb), multiload); /* menu items */ GtkMenuItem *mi_separator = GTK_MENU_ITEM(gtk_separator_menu_item_new ()); GtkMenuItem *mi_help = GTK_MENU_ITEM(gtk_menu_item_new_with_mnemonic (_("_Help"))); GtkMenuItem *mi_sysmon = GTK_MENU_ITEM(gtk_menu_item_new_with_label(_("Start task manager"))); xfce_panel_plugin_menu_show_configure (plugin); xfce_panel_plugin_menu_show_about (plugin); xfce_panel_plugin_menu_insert_item (plugin, mi_separator); xfce_panel_plugin_menu_insert_item (plugin, mi_help); xfce_panel_plugin_menu_insert_item (plugin, mi_sysmon); g_signal_connect (G_OBJECT (plugin), "configure-plugin", G_CALLBACK (xfce_configure_cb), multiload); g_signal_connect (G_OBJECT (plugin), "about", G_CALLBACK (xfce_about_cb), NULL); g_signal_connect (G_OBJECT (mi_help), "activate", G_CALLBACK (xfce_help_cb), NULL); g_signal_connect (G_OBJECT (mi_sysmon), "activate", G_CALLBACK (xfce_sysmon_cb), multiload); gtk_widget_show(GTK_WIDGET(mi_separator)); gtk_widget_show(GTK_WIDGET(mi_help)); gtk_widget_show(GTK_WIDGET(mi_sysmon)); }
static void rmenu_setup(struct app_t *app, GList *schemes) { GList *lp; /* menu item を削除する方法がわからない。 * xfce のソースを見る限り、 * - gtk_widget_destroy(item) して、 * plugin に持たせてる insert position を reset する。 * - gtk_widget_hide(item) する。 * 辺りの手が考えられる。 * 内部使用の値を勝手に書き換えるのは躊躇われるので、 * hide することにした。 * もちろん、menu は children として認識し続けてるし、 * item に関連したデータもメモリ中に残したままである。 * 何度も rmenu_setup() すると、そのうち遅くなってくるかも… */ while (app->rmenu_shown_items != NULL) { GtkWidget *item = app->rmenu_shown_items->data; gtk_widget_hide(item); app->rmenu_shown_items = g_list_delete_link( app->rmenu_shown_items, app->rmenu_shown_items); } for (lp = schemes; lp != NULL; lp = g_list_next(lp)) { gchar *str = g_strdup(lp->data); GtkWidget *item = gtk_menu_item_new_with_label(str); g_object_set_data_full(G_OBJECT(item), "scheme-name", str, g_free); g_signal_connect(G_OBJECT(item), "activate", G_CALLBACK(scheme_cb), app); gtk_widget_show(item); xfce_panel_plugin_menu_insert_item(app->applet, GTK_MENU_ITEM(item)); app->rmenu_shown_items = g_list_prepend(app->rmenu_shown_items, item); } }
static void macmenu_construct(AppletType* applet) { MacMenu *mmb = g_slice_new0(MacMenu); mmb->applet = applet; mmb->screen = wnck_screen_get(gdk_screen_get_number( gtk_widget_get_screen(GTK_WIDGET(applet)) )); mmb->mbars_scks = g_hash_table_new(NULL, NULL); mmb->title_subs = g_hash_table_new_full(g_str_hash, g_str_equal, g_free, NULL); mmb->ts_mtime = 0; mmb->basebox = GTK_BOX(gtk_hbox_new(FALSE, 0)); gtk_container_set_border_width(GTK_CONTAINER(mmb->basebox), 0); gtk_container_add(GTK_CONTAINER(applet), GTK_WIDGET(mmb->basebox)); mmb->label = GTK_LABEL(gtk_label_new(MAIN_LABEL_TEXT)); PangoAttrList *pattr = pango_attr_list_new(); PangoAttribute *pa = pango_attr_weight_new(PANGO_WEIGHT_BOLD); pa->start_index = 0; pa->end_index = 1024; pango_attr_list_insert(pattr, pa); gtk_label_set_attributes(mmb->label, pattr); pango_attr_list_unref(pattr); gtk_label_set_ellipsize(mmb->label, PANGO_ELLIPSIZE_END); gtk_label_set_max_width_chars(mmb->label, MAX_LABEL_WIDTH_N_CHARS * 10); gtk_label_set_single_line_mode(mmb->label, TRUE); gtk_box_pack_start(mmb->basebox, GTK_WIDGET(mmb->label), FALSE, FALSE, 0); mmb->label_space = gtk_event_box_new(); gtk_widget_set_size_request(mmb->label_space, 8, 1); gtk_box_pack_start(mmb->basebox, mmb->label_space, FALSE, FALSE, 0); mmb->notebook = GTK_NOTEBOOK(gtk_notebook_new()); gtk_notebook_set_show_tabs(mmb->notebook, FALSE); gtk_notebook_set_show_border(mmb->notebook, FALSE); gtk_box_pack_start(mmb->basebox, GTK_WIDGET(mmb->notebook), TRUE, TRUE, 0); mmb->dummysck = gtk_hbox_new(FALSE, 0); gtk_notebook_append_page(mmb->notebook, mmb->dummysck, NULL); mmb->mainsck = gtk_hbox_new(FALSE, SHORTCUT_SPACING); gtk_notebook_append_page(mmb->notebook, mmb->mainsck, NULL); //initialize_mainsck(mmb); mmb->button = GTK_BUTTON(gtk_button_new()); gtk_button_set_relief(mmb->button, GTK_RELIEF_NONE); gtk_button_set_focus_on_click(GTK_BUTTON(mmb->button), FALSE); gtk_box_pack_start(mmb->basebox, GTK_WIDGET(mmb->button), FALSE, FALSE, 0); g_signal_connect(mmb->screen, "active-window-changed", G_CALLBACK(desktop_active_window_changed), mmb); g_signal_connect(mmb->screen, "window-opened", G_CALLBACK(desktop_window_opened), mmb); #ifdef FOR_XFCE g_signal_connect(applet, "free-data", G_CALLBACK(macmenu_free_data), mmb); g_signal_connect(applet, "size-changed", G_CALLBACK(macmenu_set_size), mmb); // setup panel applet gtk_widget_show_all(GTK_WIDGET(mmb->basebox)); xfce_panel_plugin_add_action_widget (applet, GTK_WIDGET(mmb->button)); xfce_panel_plugin_set_expand(applet, TRUE); macmenu_set_size(applet, xfce_panel_plugin_get_size(applet), mmb); // load config, set popup macmenu_load_from_rc(mmb); GtkWidget* label_toggle = gtk_check_menu_item_new_with_label("Hide Label"); g_signal_connect(label_toggle, "toggled", G_CALLBACK(on_label_toggled), mmb); gtk_widget_show(label_toggle); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(label_toggle), mmb->hide_label); gtk_check_menu_item_toggled(GTK_CHECK_MENU_ITEM(label_toggle)); xfce_panel_plugin_menu_insert_item(mmb->applet, GTK_MENU_ITEM(label_toggle)); #elif FOR_GNOME g_signal_connect(applet, "destroy", G_CALLBACK(macmenu_free_data), mmb); // setup panel applet gtk_widget_show_all(GTK_WIDGET(applet)); g_signal_connect(GTK_WIDGET(mmb->button), "pressed", G_CALLBACK(on_button_pressed), mmb); panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MAJOR); macmenu_set_size(applet, panel_applet_get_size(applet), mmb); // load config, set popup mmb->gconf = gconf_client_get_default(); macmenu_load_from_gconf(mmb); macmenu_write_gconf(mmb); static const char toggle_menu_xml [] = "<popup name=\"button3\">\n" " <menuitem name=\"hide_label\" " " verb=\"hide_label\" " " _label=\"_Hide Label\"\n" " type=\"toggle\"/>\n" "</popup>\n"; static const BonoboUIVerb toggle_menu_verbs[] = { BONOBO_UI_VERB_END }; panel_applet_setup_menu(mmb->applet, toggle_menu_xml, toggle_menu_verbs, mmb); BonoboUIComponent* popup_component = panel_applet_get_popup_component(mmb->applet); bonobo_ui_component_set_prop(popup_component, "/commands/hide_label", "state", mmb->hide_label ? "1": "0", NULL); bonobo_ui_component_add_listener(panel_applet_get_popup_component(mmb->applet), "hide_label", (BonoboUIListenerFn) on_label_toggled, mmb); on_label_toggled(NULL, NULL, 0, NULL, mmb); #endif // FOR_XFCE/FOR_GNOME add_all(mmb); XSetErrorHandler(handle_x_error); }
static void time_out_construct (XfcePanelPlugin *plugin) { TimeOutPlugin *time_out; GtkWidget *menu_item; /* Setup translation domain */ xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); /* Create the plugin */ time_out = time_out_new (plugin); /* Load the settings */ time_out_load_settings (time_out); /* Hide the time label if settings says so */ if (!time_out->display_time) gtk_widget_hide (time_out->time_label); /* Add the event box to the panel */ gtk_container_add (GTK_CONTAINER (plugin), time_out->ebox); /* Create menu item for taking an instant break */ menu_item = gtk_menu_item_new_with_label (_("Take a break")); xfce_panel_plugin_menu_insert_item (plugin, GTK_MENU_ITEM (menu_item)); gtk_widget_show (GTK_WIDGET (menu_item)); /* Connect to the menu item to react on break requests */ g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (time_out_take_break), time_out); /* Create menu item for resetting the timer */ menu_item = gtk_menu_item_new_with_label (_("Reset timer")); xfce_panel_plugin_menu_insert_item (plugin, GTK_MENU_ITEM (menu_item)); gtk_widget_show (GTK_WIDGET (menu_item)); /* Connect to the menu item to react on reset requests */ g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (time_out_reset_timer), time_out); /* Create menu item for enabling/disabling the countdown */ menu_item = gtk_check_menu_item_new_with_label (_("Enabled")); xfce_panel_plugin_menu_insert_item (plugin, GTK_MENU_ITEM (menu_item)); gtk_widget_show (GTK_WIDGET (menu_item)); /* Connect to the check menu item to react on toggle events */ g_signal_connect (G_OBJECT (menu_item), "toggled", G_CALLBACK (time_out_enabled_toggled), time_out); /* Set enabled state according to the settings */ gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_item), time_out->enabled); /* Connect plugin signals */ g_signal_connect (G_OBJECT (plugin), "free-data", G_CALLBACK (time_out_free), time_out); g_signal_connect (G_OBJECT (plugin), "size-changed", G_CALLBACK (time_out_size_changed), time_out); g_signal_connect (G_OBJECT (plugin), "configure-plugin", G_CALLBACK (time_out_configure), time_out); g_signal_connect (G_OBJECT (plugin), "orientation-changed", G_CALLBACK (time_out_orientation_changed), time_out); g_signal_connect (G_OBJECT (plugin), "about", G_CALLBACK (time_out_about), NULL); /* Display the configure menu item */ xfce_panel_plugin_menu_show_configure (plugin); /* Display the about menu item */ xfce_panel_plugin_menu_show_about (plugin); /* Start break countdown if the plugin is active */ if (G_LIKELY (time_out->enabled)) time_out_start_break_countdown (time_out, time_out->break_countdown_seconds); }