static void eyes_construct (XfcePanelPlugin *plugin) { t_eyes *eyes = g_new0 (t_eyes, 1); g_signal_connect (plugin, "orientation-changed", G_CALLBACK (eyes_orientation_changed), eyes); g_signal_connect (plugin, "size-changed", G_CALLBACK (eyes_set_size), NULL); g_signal_connect (plugin, "free-data", G_CALLBACK (eyes_free_data), eyes); g_signal_connect (plugin, "save", G_CALLBACK (eyes_write_rc_file), eyes); xfce_panel_plugin_menu_show_configure (plugin); g_signal_connect (plugin, "configure-plugin", G_CALLBACK (eyes_properties_dialog), eyes); eyes->plugin = plugin; eyes_read_rc_file (plugin, eyes); gtk_container_add (GTK_CONTAINER (plugin), eyes->eyes); xfce_panel_plugin_add_action_widget (plugin, eyes->eyes); }
static void exitbutton_construct(XfcePanelPlugin *plugin) { ExitbuttonPlugin *exitbutton; /* setup translation domain */ xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); /* create the plugin */ exitbutton = exitbutton_new(plugin); /* add the button to the panel */ gtk_container_add(GTK_CONTAINER (plugin), exitbutton->button); /* show the panel's right-click menu on this bitton */ xfce_panel_plugin_add_action_widget(plugin, exitbutton->button); /* connect plugin signals */ g_signal_connect(G_OBJECT(plugin), "free-data", G_CALLBACK(exitbutton_free), exitbutton); g_signal_connect(G_OBJECT(plugin), "save", G_CALLBACK(exitbutton_save), exitbutton); g_signal_connect(G_OBJECT(plugin), "size-changed", G_CALLBACK(exitbutton_size_changed), exitbutton); g_signal_connect(G_OBJECT(plugin), "orientation-changed", G_CALLBACK(exitbutton_orientation_changed), exitbutton); /* show the configure menu item and connect signal */ xfce_panel_plugin_menu_show_configure (plugin); g_signal_connect (G_OBJECT(plugin), "configure-plugin", G_CALLBACK(exitbutton_configure), exitbutton); /* show the about menu item and connect signal */ xfce_panel_plugin_menu_show_about (plugin); g_signal_connect (G_OBJECT(plugin), "about", G_CALLBACK(exitbutton_about), NULL); }
static void xfapplet_setup_empty (XfAppletPlugin *xap) { GtkWidget *img, *eb, *child = NULL; GdkPixbuf *pixbuf; gint size; size = xfce_panel_plugin_get_size (xap->plugin); pixbuf = gdk_pixbuf_new_from_file_at_size (DATADIR "/pixmaps/xfapplet1.svg", size, size, NULL); img = gtk_image_new_from_pixbuf (pixbuf); g_object_unref (pixbuf); gtk_widget_show (img); eb = gtk_event_box_new (); gtk_container_add (GTK_CONTAINER (eb), img); gtk_widget_show (eb); child = xfapplet_get_plugin_child (xap->plugin); if (child) gtk_widget_destroy (child); gtk_container_add (GTK_CONTAINER(xap->plugin), eb); xfce_panel_plugin_add_action_widget (xap->plugin, eb); xfce_panel_plugin_menu_show_configure (xap->plugin); xfce_panel_plugin_menu_show_about (xap->plugin); xap->configured = FALSE; }
static void i3_workspaces_construct (XfcePanelPlugin *plugin) { i3WorkspacesPlugin *i3_workspaces; /* create the plugin */ i3_workspaces = i3_workspaces_new (plugin); /* add the ebox to the panel */ gtk_container_add (GTK_CONTAINER (plugin), i3_workspaces->ebox); /* show the panel's right-click menu on this ebox */ xfce_panel_plugin_add_action_widget (plugin, i3_workspaces->ebox); /* connect plugin signals */ g_signal_connect (G_OBJECT (plugin), "free-data", G_CALLBACK (i3_workspaces_free), i3_workspaces); g_signal_connect (G_OBJECT (plugin), "save", G_CALLBACK (i3_workspaces_save), i3_workspaces); g_signal_connect (G_OBJECT (plugin), "size-changed", G_CALLBACK (i3_workspaces_size_changed), i3_workspaces); g_signal_connect (G_OBJECT (plugin), "orientation-changed", G_CALLBACK (i3_workspaces_orientation_changed), i3_workspaces); }
/** * construct: * @plugin: the xfce plugin * * Constructs the xfce plugin. */ static void construct(XfcePanelPlugin *plugin) { i3WorkspacesPlugin *i3_workspaces = construct_workspaces(plugin); /* add the ebox to the panel */ gtk_container_add (GTK_CONTAINER(plugin), i3_workspaces->ebox); /* show the panel's right-click menu on this ebox */ xfce_panel_plugin_add_action_widget(plugin, i3_workspaces->ebox); /* connect plugin signals */ g_signal_connect(G_OBJECT(plugin), "free-data", G_CALLBACK(destruct), i3_workspaces); g_signal_connect(G_OBJECT(plugin), "size-changed", G_CALLBACK(size_changed), i3_workspaces); g_signal_connect(G_OBJECT(plugin), "orientation-changed", G_CALLBACK (orientation_changed), i3_workspaces); g_signal_connect(G_OBJECT(plugin), "configure-plugin", G_CALLBACK (configure_plugin), i3_workspaces); /* show the configure menu item */ xfce_panel_plugin_menu_show_configure(plugin); }
t_quicklauncher * quicklauncher_new (XfcePanelPlugin *plugin) { t_quicklauncher *quicklauncher; gchar *filename; DBG ("create quicklauncher"); quicklauncher = g_new0(t_quicklauncher, 1); filename = xfce_panel_plugin_save_location(plugin, TRUE); quicklauncher->icon_size = (gint) (0.75 * xfce_panel_plugin_get_size(plugin)/2); DBG ("icon size: %d", quicklauncher->icon_size); if((!filename) || (!quicklauncher_load_config(quicklauncher, filename) ) ) quicklauncher_load_default(quicklauncher); quicklauncher->orientation = xfce_panel_plugin_get_orientation(plugin); quicklauncher->plugin = plugin; quicklauncher->table = g_object_ref(gtk_table_new(2, 2, TRUE)); gtk_table_set_col_spacings(GTK_TABLE(quicklauncher->table), 0); gtk_container_add( GTK_CONTAINER(quicklauncher->plugin), quicklauncher->table); xfce_panel_plugin_add_action_widget(quicklauncher->plugin, quicklauncher->table); gtk_widget_show(quicklauncher->table); quicklauncher_organize(quicklauncher); return quicklauncher; }
static void clipman_construct (XfcePanelPlugin *plugin) { ClipmanPlugin *clipman; xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); clipman = clipman_new (plugin); gtk_container_add (GTK_CONTAINER (plugin), clipman->button); xfce_panel_plugin_add_action_widget (plugin, clipman->button); g_signal_connect (plugin, "free-data", G_CALLBACK (clipman_free), clipman); g_signal_connect (plugin, "save", G_CALLBACK (clipman_save), clipman); g_signal_connect (plugin, "size-changed", G_CALLBACK (clipman_set_size), clipman); xfce_panel_plugin_menu_show_configure (plugin); g_signal_connect (plugin, "configure-plugin", G_CALLBACK (clipman_configure), clipman); }
void quicklauncher_add_element(t_quicklauncher *quicklauncher, t_launcher *launcher) { quicklauncher->launchers = g_list_append(quicklauncher->launchers, (gpointer)launcher); xfce_panel_plugin_add_action_widget(quicklauncher->plugin, launcher->widget); quicklauncher->nb_launcher++; }
/** * add_workspaces: * @i3_workspaces: the workspaces plugin * * Add the workspaces. */ static void add_workspaces(i3WorkspacesPlugin *i3_workspaces) { GSList *wlist = i3wm_get_workspaces(i3_workspaces->i3wm); GSList *witem; for (witem = wlist; witem != NULL; witem = witem->next) { i3workspace *workspace = (i3workspace *) witem->data; if (workspace) { GtkWidget * button; button = xfce_panel_create_button(); gtk_button_set_label(GTK_BUTTON(button), workspace->name); set_button_label(button, workspace, i3_workspaces->config); g_signal_connect(G_OBJECT(button), "clicked", G_CALLBACK(on_workspace_clicked), i3_workspaces); /* show the panel's right-click menu on this button */ xfce_panel_plugin_add_action_widget(i3_workspaces->plugin, button); /* avoid acceleration key interference */ gtk_button_set_use_underline(GTK_BUTTON(button), FALSE); gtk_box_pack_end(GTK_BOX(i3_workspaces->hvbox), button, FALSE, FALSE, 0); gtk_widget_show(button); g_hash_table_insert(i3_workspaces->workspace_buttons, workspace, button); } } }
static void windowck_construct(XfcePanelPlugin *plugin) { WindowckPlugin *wckp; GtkWidget *refresh; /* setup transation domain */ xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); /* create the plugin */ wckp = windowck_new(plugin); /* add the ebox to the panel */ gtk_container_add(GTK_CONTAINER (plugin), wckp->ebox); /* show the panel's right-click menu on this ebox */ xfce_panel_plugin_add_action_widget(plugin, wckp->ebox); // Set event handling (icon & title clicks) g_signal_connect(G_OBJECT (wckp->ebox), "button-press-event", G_CALLBACK (on_title_pressed), wckp); g_signal_connect(G_OBJECT (wckp->ebox), "button-release-event", G_CALLBACK (on_title_released), wckp); g_signal_connect(G_OBJECT (wckp->icon->eventbox), "button-release-event", G_CALLBACK (on_icon_released), wckp); /* connect plugin signals */ g_signal_connect(G_OBJECT (plugin), "free-data", G_CALLBACK (windowck_free), wckp); g_signal_connect(G_OBJECT (plugin), "save", G_CALLBACK (windowck_save), wckp); g_signal_connect(G_OBJECT (plugin), "size-changed", G_CALLBACK (windowck_size_changed), wckp); g_signal_connect(G_OBJECT (plugin), "screen-position-changed", G_CALLBACK (windowck_screen_position_changed), wckp); g_signal_connect(G_OBJECT (plugin), "orientation-changed", G_CALLBACK (windowck_orientation_changed), wckp); /* show the configure menu item and connect signal */ xfce_panel_plugin_menu_show_configure(plugin); g_signal_connect(G_OBJECT (plugin), "configure-plugin", G_CALLBACK (windowck_configure), wckp); /* show the about menu item and connect signal */ xfce_panel_plugin_menu_show_about(plugin); g_signal_connect (G_OBJECT (plugin), "about", G_CALLBACK (wck_about), "windowck-plugin"); /* add custom menu items */ refresh = show_refresh_item (plugin); g_signal_connect (G_OBJECT (refresh), "activate", G_CALLBACK (on_refresh_item_activated), wckp); /* start tracking title size */ init_title(wckp); /* start tracking title text */ wckp->win = g_slice_new0 (WckUtils); init_wnck(wckp->win, wckp->prefs->only_maximized, wckp); }
static void screenshot_construct (XfcePanelPlugin * plugin) { ScreenshotData *sd = g_new0 (ScreenshotData, 1); sd->plugin = plugin; screenshot_read_rc_file (plugin, sd); sd->button = xfce_create_panel_button (); sd->counter = 0; sd->tooltips = gtk_tooltips_new (); gtk_tooltips_set_tip (sd->tooltips, sd->button, _("Take screenshot"), NULL); sd->image = gtk_image_new (); gtk_container_add (GTK_CONTAINER (sd->button), GTK_WIDGET (sd->image)); gtk_widget_show_all (sd->button); sd->chooser = gtk_file_chooser_dialog_new ( _("Save screenshot as ..."), NULL, GTK_FILE_CHOOSER_ACTION_SAVE, GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL, GTK_STOCK_SAVE, GTK_RESPONSE_ACCEPT, NULL); #if GTK_CHECK_VERSION(2,8,0) gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (sd->chooser), TRUE); #endif gtk_dialog_set_default_response (GTK_DIALOG (sd->chooser), GTK_RESPONSE_ACCEPT); sd->preview = gtk_image_new (); gtk_file_chooser_set_preview_widget (GTK_FILE_CHOOSER (sd->chooser), sd->preview); gtk_container_add (GTK_CONTAINER (plugin), sd->button); xfce_panel_plugin_add_action_widget (plugin, sd->button); g_signal_connect (sd->button, "clicked", G_CALLBACK (button_clicked), sd); g_signal_connect (plugin, "free-data", G_CALLBACK (screenshot_free_data), sd); g_signal_connect (plugin, "size-changed", G_CALLBACK (screenshot_set_size), sd); sd->style_id = g_signal_connect (plugin, "style-set", G_CALLBACK (screenshot_style_set), sd); xfce_panel_plugin_menu_show_configure (plugin); g_signal_connect (plugin, "configure-plugin", G_CALLBACK (screenshot_properties_dialog), sd); }
static void fortune_fish_plugin_construct(XfcePanelPlugin *plugin) { fortune_fish_plugin *fish_plugin; xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); fish_plugin = fortune_fish_plugin_new(plugin); /* Add the animation to the panel plugin. */ gtk_container_add(GTK_CONTAINER(plugin), fish_plugin->fish->ebox); xfce_panel_plugin_add_action_widget(plugin, fish_plugin->fish->ebox); }
static void lightdash_construct (XfcePanelPlugin *plugin) { LightdashPlugin *lightdash; xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); lightdash = lightdash_new (plugin); /* set translation domain */ // xfce_textdomain (GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); /* create initial window */ lightdash->lightdash_window = lightdash_window_new (NULL, !opt_collapsed, lightdash); xfce_panel_plugin_add_action_widget (plugin, lightdash->button); xfce_panel_plugin_menu_show_configure (plugin); g_signal_connect (G_OBJECT (plugin), "free-data", G_CALLBACK (lightdash_free), lightdash); g_signal_connect (G_OBJECT (plugin), "save", G_CALLBACK (lightdash_save), lightdash); g_signal_connect (G_OBJECT (lightdash->button), "toggled", G_CALLBACK (lightdash_button_clicked), lightdash); g_signal_connect (G_OBJECT (plugin), "size-changed", G_CALLBACK (lightdash_size_changed), lightdash); g_signal_connect (G_OBJECT (lightdash->lightdash_window), "unmap", G_CALLBACK (lightdash_window_unmap), lightdash); g_signal_connect (G_OBJECT (plugin), "configure-plugin", G_CALLBACK (lightdash_configure), lightdash); g_signal_connect (G_OBJECT (plugin), "remote-event", G_CALLBACK (lightdash_remote_event), lightdash); }
static void sample_construct (XfcePanelPlugin *plugin) { SamplePlugin *sample; /* setup transation domain */ xfce_textdomain(GETTEXT_PACKAGE, PACKAGE_LOCALE_DIR, "UTF-8"); /* create the plugin */ sample = sample_new (plugin); /* add the ebox to the panel */ gtk_container_add (GTK_CONTAINER (plugin), sample->ebox); /* show the panel's right-click menu on this ebox */ xfce_panel_plugin_add_action_widget (plugin, sample->ebox); /* connect plugin signals */ g_signal_connect (G_OBJECT (plugin), "free-data", G_CALLBACK (sample_free), sample); g_signal_connect (G_OBJECT (plugin), "save", G_CALLBACK (sample_save), sample); g_signal_connect (G_OBJECT (plugin), "size-changed", G_CALLBACK (sample_size_changed), sample); g_signal_connect (G_OBJECT (plugin), "orientation-changed", G_CALLBACK (sample_orientation_changed), sample); /* show the configure menu item and connect signal */ xfce_panel_plugin_menu_show_configure (plugin); g_signal_connect (G_OBJECT (plugin), "configure-plugin", G_CALLBACK (sample_configure), sample); /* show the about menu item and connect signal */ xfce_panel_plugin_menu_show_about (plugin); g_signal_connect (G_OBJECT (plugin), "about", G_CALLBACK (sample_about), 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 planetload_applet_start(XfcePanelPlugin *plugin) { struct app_t *app; GtkWidget *vbox; xfce_textdomain (GETTEXT_PACKAGE, LOCALEDIR, NULL); app = g_new(struct app_t, 1); memset(app, 0, sizeof *app); app->use_planet = TRUE; app->applet = plugin; g_signal_connect(plugin, "free-data", G_CALLBACK(destroy_cb), app); g_signal_connect(plugin, "save", G_CALLBACK(save_config_cb), app); g_signal_connect(plugin, "size-changed", G_CALLBACK(change_size_cb), app); g_signal_connect(plugin, "orientation-changed", G_CALLBACK(change_orient_cb), app); g_signal_connect(plugin, "configure-plugin", G_CALLBACK(preferences), app); g_signal_connect(plugin, "about", G_CALLBACK(about), app); app->is_vert = get_applet_vert(plugin); app->tooltips = gtk_tooltips_new(); vbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(plugin), vbox); xfce_panel_plugin_add_action_widget(plugin, vbox); if (!app->is_vert) app->pack = gtk_hbox_new(FALSE, 0); else app->pack = gtk_vbox_new(FALSE, 0); gtk_box_pack_start(GTK_BOX(vbox), app->pack, TRUE, TRUE, 0); if (!appconf_load(app)) { appconf_init(app); appconf_save(app); } xfce_panel_plugin_menu_show_configure(plugin); xfce_panel_plugin_menu_show_about(plugin); setup_schemes_menu(app); app->scheme_label_bar = gtk_event_box_new(); gtk_box_pack_end(GTK_BOX(vbox), app->scheme_label_bar, FALSE, FALSE, 0); g_signal_connect(G_OBJECT(app->scheme_label_bar), "button-press-event", G_CALLBACK(lmenu_popup), app); { gchar buf[128]; app->scheme_label_text = gtk_label_new(scheme_get_current(app, buf)); gtk_container_add(GTK_CONTAINER(app->scheme_label_bar), app->scheme_label_text); } { PangoFontDescription *pfd; pfd = pango_font_description_from_string(app->fontname); gtk_widget_modify_font(app->scheme_label_text, pfd); pango_font_description_free(pfd); } gtk_widget_show_all(GTK_WIDGET(vbox)); disp_scheme_onoff(app); timer_set(app); }
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 t_xkb * xkb_new (XfcePanelPlugin *plugin) { t_xkb *xkb; gchar *filename; WnckScreen *wnck_screen; xkb = panel_slice_new0 (t_xkb); xkb->plugin = plugin; filename = xfce_panel_plugin_lookup_rc_file (plugin); if ((!filename) || (!xkb_load_config (xkb, filename))) { xkb_load_default (xkb); } g_free (filename); xkb->btn = gtk_button_new (); gtk_button_set_relief (GTK_BUTTON (xkb->btn), GTK_RELIEF_NONE); gtk_container_add (GTK_CONTAINER (xkb->plugin), xkb->btn); xfce_panel_plugin_add_action_widget (xkb->plugin, xkb->btn); xkb->button_state = GTK_STATE_NORMAL; gtk_widget_show (xkb->btn); g_signal_connect (xkb->btn, "clicked", G_CALLBACK (xkb_plugin_button_clicked), xkb); g_signal_connect (xkb->btn, "scroll-event", G_CALLBACK (xkb_plugin_button_scrolled), NULL); g_object_set (G_OBJECT (xkb->btn), "has-tooltip", TRUE, NULL); g_signal_connect (xkb->btn, "query-tooltip", G_CALLBACK (xkb_plugin_set_tooltip), xkb); g_signal_connect (G_OBJECT (xkb->btn), "enter-notify-event", G_CALLBACK (xkb_plugin_button_entered), xkb); g_signal_connect (G_OBJECT (xkb->btn), "leave-notify-event", G_CALLBACK (xkb_plugin_button_left), xkb); g_signal_connect (G_OBJECT (xkb->btn), "size-allocate", G_CALLBACK (xkb_plugin_button_size_allocated), xkb); xkb->layout_image = gtk_image_new (); gtk_container_add (GTK_CONTAINER (xkb->btn), xkb->layout_image); g_signal_connect (G_OBJECT (xkb->layout_image), "expose-event", G_CALLBACK (xkb_plugin_layout_image_exposed), xkb); gtk_widget_show (GTK_WIDGET (xkb->layout_image)); if (xkb_config_initialize (xkb->group_policy, xkb_state_changed, xkb)) { xkb_refresh_gui (xkb); xkb_populate_popup_menu (xkb); } wnck_screen = wnck_screen_get_default (); g_signal_connect (G_OBJECT (wnck_screen), "active-window-changed", G_CALLBACK (xkb_plugin_active_window_changed), xkb); g_signal_connect (G_OBJECT (wnck_screen), "window-closed", G_CALLBACK (xkb_plugin_window_closed), xkb); g_signal_connect (G_OBJECT (wnck_screen), "application-closed", G_CALLBACK (xkb_plugin_application_closed), xkb); return xkb; }