static gboolean workrave_applet_set_menu_status(WorkraveApplet *applet, const char *name, gboolean status, GError **err) { BonoboUIComponent *ui = NULL; gboolean set = FALSE; if (applet != NULL && applet->applet != NULL) { ui = panel_applet_get_popup_component(PANEL_APPLET(applet->applet)); } if (ui != NULL) { const char *s = bonobo_ui_component_get_prop(ui, name, "state", NULL); set = (s != NULL && atoi(s) != 0); if ((status && !set) || (!status && set)) { bonobo_ui_component_set_prop(ui, name, "state", status ? "1" : "0", NULL); } } return TRUE; }
static GtkWidget * wireless_applet_new (WirelessApplet *applet) { panel_applet_set_flags (PANEL_APPLET (applet), PANEL_APPLET_EXPAND_MINOR); applet->skfd = iw_sockets_open (); /* this ensures that properties are loaded */ wireless_applet_load_properties (applet); wireless_applet_load_theme (applet); setup_widgets (applet); applet->tips = gtk_tooltips_new (); g_object_ref (applet->tips); gtk_object_sink (GTK_OBJECT (applet->tips)); applet->prefs = NULL; g_signal_connect (applet,"destroy", G_CALLBACK (wireless_applet_destroy),NULL); g_signal_connect (applet->button, "button_press_event", G_CALLBACK (do_not_eat_button_press), NULL); /* Setup the menus */ panel_applet_setup_menu_from_file (PANEL_APPLET (applet), NULL, "GNOME_WirelessApplet.xml", NULL, wireless_menu_verbs, applet); if (panel_applet_get_locked_down (PANEL_APPLET (applet))) { BonoboUIComponent *popup_component; popup_component = panel_applet_get_popup_component (PANEL_APPLET (applet)); bonobo_ui_component_set_prop (popup_component, "/commands/WirelessProperties", "hidden", "1", NULL); } check_wireless (applet); wireless_applet_timeout_handler (applet); wireless_applet_start_timeout (applet); g_signal_connect (G_OBJECT (applet), "change_size", G_CALLBACK (change_size_cb), applet); g_signal_connect (G_OBJECT (applet), "change_orient", G_CALLBACK (change_orient_cb), applet); return GTK_WIDGET (applet); }
static void on_label_toggled(BonoboUIComponent *uic, const gchar *path, Bonobo_UIComponent_EventType type, const gchar *state, MacMenu *mmb) { BonoboUIComponent* popup_component = panel_applet_get_popup_component(mmb->applet); gchar* r = bonobo_ui_component_get_prop( popup_component, "/commands/hide_label", "state", NULL); mmb->hide_label = (strcmp(r, "1") == 0 ? TRUE: FALSE); g_free(r); if (mmb->hide_label) { gtk_widget_hide(GTK_WIDGET(mmb->label)); gtk_widget_hide(GTK_WIDGET(mmb->label_space)); } else { gtk_widget_show(GTK_WIDGET(mmb->label)); gtk_widget_show(GTK_WIDGET(mmb->label_space)); } macmenu_write_gconf(mmb); }
static gboolean workrave_applet_get_menu_active(WorkraveApplet *applet, const char *name, gboolean *active, GError **err) { BonoboUIComponent *ui = NULL; gboolean ret = FALSE; if (applet != NULL && applet->applet != NULL) { ui = panel_applet_get_popup_component(PANEL_APPLET(applet->applet)); } if (ui != NULL) { const char *s = bonobo_ui_component_get_prop(ui, name, "hidden", NULL); *active = (s != NULL && atoi(s) != 0); ret = TRUE; } return ret; }
static void workrave_applet_set_hidden(gchar *name, gboolean hidden) { BonoboUIComponent *ui = NULL; gboolean set = FALSE; if (g_applet != NULL && g_applet->applet != NULL) { ui = panel_applet_get_popup_component(PANEL_APPLET(g_applet->applet)); } if (ui != NULL) { const char *s = bonobo_ui_component_get_prop(ui, name, "hidden", NULL); set = (s != NULL && atoi(s) != 0); if ((hidden && !set) || (!hidden && set)) { bonobo_ui_component_set_prop(ui, name, "hidden", hidden ? "1" : "0", NULL); } } }
gboolean show_desktop_applet_fill (PanelApplet *applet) { ShowDesktopData *sdd; AtkObject *atk_obj; BonoboUIComponent* popup_component; panel_applet_set_flags (applet, PANEL_APPLET_EXPAND_MINOR); sdd = g_new0 (ShowDesktopData, 1); sdd->applet = GTK_WIDGET (applet); sdd->image = gtk_image_new (); switch (panel_applet_get_orient (applet)) { case PANEL_APPLET_ORIENT_LEFT: case PANEL_APPLET_ORIENT_RIGHT: sdd->orient = GTK_ORIENTATION_VERTICAL; break; case PANEL_APPLET_ORIENT_UP: case PANEL_APPLET_ORIENT_DOWN: default: sdd->orient = GTK_ORIENTATION_HORIZONTAL; break; } sdd->size = panel_applet_get_size (PANEL_APPLET (sdd->applet)); g_signal_connect (G_OBJECT (sdd->applet), "realize", G_CALLBACK (show_desktop_applet_realized), sdd); sdd->button = gtk_toggle_button_new (); gtk_widget_set_name (sdd->button, "showdesktop-button"); gtk_rc_parse_string ("\n" " style \"showdesktop-button-style\"\n" " {\n" " GtkWidget::focus-line-width=0\n" " GtkWidget::focus-padding=0\n" " }\n" "\n" " widget \"*.showdesktop-button\" style \"showdesktop-button-style\"\n" "\n"); atk_obj = gtk_widget_get_accessible (sdd->button); atk_object_set_name (atk_obj, _("Show Desktop Button")); g_signal_connect (G_OBJECT (sdd->button), "button_press_event", G_CALLBACK (do_not_eat_button_press), NULL); g_signal_connect (G_OBJECT (sdd->button), "toggled", G_CALLBACK (button_toggled_callback), sdd); gtk_container_set_border_width (GTK_CONTAINER (sdd->button), 0); gtk_container_add (GTK_CONTAINER (sdd->button), sdd->image); gtk_container_add (GTK_CONTAINER (sdd->applet), sdd->button); g_signal_connect (G_OBJECT (sdd->button), "size_allocate", G_CALLBACK (button_size_allocated), sdd); /* FIXME: Update this comment. */ /* we have to bind change_orient before we do applet_widget_add since we need to get an initial change_orient signal to set our initial oriantation, and we get that during the _add call */ g_signal_connect (G_OBJECT (sdd->applet), "change_orient", G_CALLBACK (applet_change_orient), sdd); panel_applet_set_background_widget (PANEL_APPLET (sdd->applet), GTK_WIDGET (sdd->applet)); panel_applet_setup_menu_from_file (PANEL_APPLET (sdd->applet), NULL, "GNOME_ShowDesktopApplet.xml", NULL, show_desktop_menu_verbs, sdd); g_signal_connect (G_OBJECT (sdd->applet), "destroy", G_CALLBACK (applet_destroyed), sdd); gtk_drag_dest_set (GTK_WIDGET(sdd->button), 0, NULL, 0, 0); g_signal_connect (G_OBJECT(sdd->button), "drag_motion", G_CALLBACK (button_drag_motion), sdd); g_signal_connect (G_OBJECT(sdd->button), "drag_leave", G_CALLBACK (button_drag_leave), sdd); popup_component = panel_applet_get_popup_component (sdd->applet); launchpad_integration_add_bonobo_ui(popup_component, "/popups/button3/LaunchpadItems"); gtk_widget_show_all (sdd->applet); return TRUE; }
static gboolean workrave_applet_fill(PanelApplet *applet) { GdkPixbuf *pixbuf = NULL; GtkWidget *hbox = NULL; BonoboUIComponent *ui = NULL; PanelAppletOrient orient; // Create menus. panel_applet_setup_menu_from_file(applet, WORKRAVE_UIDATADIR, "GNOME_WorkraveApplet.xml", NULL, workrave_applet_verbs, applet); // Add listeners for menu toggle-items. ui = panel_applet_get_popup_component(applet); bonobo_ui_component_add_listener(ui, "ShowLog", showlog_callback, NULL); bonobo_ui_component_add_listener(ui, "Normal", mode_callback, NULL); bonobo_ui_component_add_listener(ui, "Suspended", mode_callback, NULL); bonobo_ui_component_add_listener(ui, "Quiet", mode_callback, NULL); panel_applet_set_flags(PANEL_APPLET(applet), PANEL_APPLET_EXPAND_MINOR); gtk_container_set_border_width(GTK_CONTAINER(applet), 0); panel_applet_set_background_widget(applet, GTK_WIDGET(applet)); gtk_widget_set_events(GTK_WIDGET(applet), gtk_widget_get_events(GTK_WIDGET(applet)) | GDK_BUTTON_PRESS_MASK); g_signal_connect(G_OBJECT(applet), "button_press_event", G_CALLBACK(button_pressed), g_applet); // Socket. g_applet->socket = gtk_socket_new(); gtk_container_set_border_width(GTK_CONTAINER(g_applet->socket), 0); // Image pixbuf = gdk_pixbuf_new_from_file(WORKRAVE_PKGDATADIR "/images/workrave-icon-medium.png", NULL); g_applet->image = gtk_image_new_from_pixbuf(pixbuf); // Signals. g_signal_connect(g_applet->socket, "plug_removed", G_CALLBACK(plug_removed), NULL); g_signal_connect(g_applet->socket, "plug_added", G_CALLBACK(plug_added), NULL); g_signal_connect(G_OBJECT(applet), "change_orient", G_CALLBACK(change_orient), NULL); // Container. hbox = gtk_vbox_new(FALSE, 0); gtk_container_add(GTK_CONTAINER(applet), hbox); gtk_box_pack_end(GTK_BOX(hbox), g_applet->socket, TRUE, TRUE, 0); gtk_box_pack_end(GTK_BOX(hbox), g_applet->image, TRUE, TRUE, 0); gtk_container_set_border_width(GTK_CONTAINER(hbox), 0); g_applet->socket_id = gtk_socket_get_id(GTK_SOCKET(g_applet->socket)); g_applet->size = panel_applet_get_size(applet); orient = panel_applet_get_orient(applet); switch (orient) { case PANEL_APPLET_ORIENT_UP: g_applet->orientation = 0; break; case PANEL_APPLET_ORIENT_RIGHT: g_applet->orientation = 1; break; case PANEL_APPLET_ORIENT_DOWN: g_applet->orientation = 2; break; case PANEL_APPLET_ORIENT_LEFT: g_applet->orientation = 3; break; } force_no_focus_padding(GTK_WIDGET(applet)); force_no_focus_padding(GTK_WIDGET(g_applet->socket)); force_no_focus_padding(GTK_WIDGET(g_applet->image)); force_no_focus_padding(GTK_WIDGET(hbox)); g_signal_connect(G_OBJECT(applet), "destroy", G_CALLBACK(workrave_applet_destroy), NULL); g_signal_connect(G_OBJECT(hbox), "realize", G_CALLBACK(workrave_applet_realize), NULL); g_signal_connect(G_OBJECT(hbox), "unrealize", G_CALLBACK(workrave_applet_unrealize), NULL); gtk_widget_show(GTK_WIDGET(g_applet->image)); gtk_widget_show(GTK_WIDGET(g_applet->socket)); gtk_widget_show(GTK_WIDGET(hbox)); gtk_widget_show(GTK_WIDGET(applet)); g_signal_connect(G_OBJECT(applet), "size-allocate", G_CALLBACK(size_allocate), NULL); g_signal_connect(G_OBJECT(applet), "change_background", G_CALLBACK(change_background), NULL); return TRUE; }
static void rmenu_setup(struct app_t *app, GList *schemes) { BonoboUIComponent *uic = panel_applet_get_popup_component(app->applet); BonoboUINode *placeholder; gchar namebuf[128]; debug_log("rmenu_setup:\n"); #if 0 show_menu(0, bonobo_ui_component_get_tree(uic, "/", TRUE, NULL)); #endif placeholder = bonobo_ui_component_get_tree(uic, "/popups/popup/Schemes List", TRUE, NULL); if (placeholder == NULL) { debug_log("no placeholder\n"); return; } debug_log("has placeholder\n"); // 前のを削除。 { BonoboUINode *node; bonobo_ui_component_freeze(uic, NULL); for (node = bonobo_ui_node_children(placeholder); node != NULL; node = bonobo_ui_node_next(node)) { gchar path[1024]; sprintf(path, "/popups/popup/Schemes List/%s", bonobo_ui_node_get_attr(node, "name")); debug_log("rmenu_setup: remove %s\n", path); bonobo_ui_component_rm(uic, path, NULL); } bonobo_ui_component_thaw(uic, NULL); } // 最新のを追加。 if (app->use_planet) { gchar xmlbuf[1024]; bonobo_ui_component_freeze(uic, NULL); for ( ; schemes != NULL; schemes = g_list_next(schemes)) { gchar *p = schemes->data; gchar *verb = rmenu_make_verb(p); gchar *name; name = rmenu_next_name(namebuf); sprintf(xmlbuf, "<menuitem name=\"%s\" verb=\"%s\" label=\"%s\"/>", name, verb, p); bonobo_ui_component_add_verb(uic, verb, scheme_cb, app); debug_log("rmenu_setup: add %s\n", name); bonobo_ui_component_set(uic, "/popups/popup/Schemes List", xmlbuf, NULL); g_free(verb); } sprintf(xmlbuf, "<separator name=\"%s\"/>", rmenu_next_name(namebuf)); bonobo_ui_component_set(uic, "/popups/popup/Schemes List", xmlbuf, NULL); bonobo_ui_component_thaw(uic, NULL); } #if 0 show_menu(0, bonobo_ui_component_get_tree(uic, "/", TRUE, NULL)); #endif debug_log("rmenu_setup: done.\n"); }
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); }
gboolean workspace_switcher_applet_fill (PanelApplet *applet) { PagerData *pager; GError *error; gboolean display_names; BonoboUIComponent* popup_component; panel_applet_add_preferences (applet, "/schemas/apps/workspace_switcher_applet/prefs", NULL); pager = g_new0 (PagerData, 1); pager->applet = GTK_WIDGET (applet); panel_applet_set_flags (PANEL_APPLET (pager->applet), PANEL_APPLET_EXPAND_MINOR); setup_gconf (pager); error = NULL; pager->n_rows = panel_applet_gconf_get_int (applet, "num_rows", &error); if (error) { g_printerr (_("Error loading num_rows value for Workspace Switcher: %s\n"), error->message); g_error_free (error); /* leave current value */ } pager->n_rows = CLAMP (pager->n_rows, 1, MAX_REASONABLE_ROWS); error = NULL; display_names = panel_applet_gconf_get_bool (applet, "display_workspace_names", &error); if (error) { g_printerr (_("Error loading display_workspace_names value for Workspace Switcher: %s\n"), error->message); g_error_free (error); /* leave current value */ } if (display_names) { pager->display_mode = WNCK_PAGER_DISPLAY_NAME; } else { pager->display_mode = WNCK_PAGER_DISPLAY_CONTENT; } error = NULL; pager->display_all = panel_applet_gconf_get_bool (applet, "display_all_workspaces", &error); if (error) { g_printerr (_("Error loading display_all_workspaces value for Workspace Switcher: %s\n"), error->message); g_error_free (error); /* leave current value */ } switch (panel_applet_get_orient (applet)) { case PANEL_APPLET_ORIENT_LEFT: case PANEL_APPLET_ORIENT_RIGHT: pager->orientation = GTK_ORIENTATION_VERTICAL; break; case PANEL_APPLET_ORIENT_UP: case PANEL_APPLET_ORIENT_DOWN: default: pager->orientation = GTK_ORIENTATION_HORIZONTAL; break; } pager->screen = wncklet_get_screen (pager->applet); /* because the pager doesn't respond to signals at the moment */ wnck_screen_force_update (pager->screen); pager->pager = wnck_pager_new (pager->screen); wnck_pager_set_shadow_type (WNCK_PAGER (pager->pager), GTK_SHADOW_IN); g_signal_connect (G_OBJECT (pager->pager), "destroy", G_CALLBACK (destroy_pager), pager); pager_update (pager); gtk_container_add (GTK_CONTAINER (pager->applet), pager->pager); gtk_widget_show (pager->pager); gtk_widget_show (pager->applet); g_signal_connect (G_OBJECT (pager->applet), "realize", G_CALLBACK (applet_realized), pager); g_signal_connect (G_OBJECT (pager->applet), "change_orient", G_CALLBACK (applet_change_orient), pager); g_signal_connect (G_OBJECT (pager->applet), "scroll-event", G_CALLBACK (applet_scroll), pager); g_signal_connect (G_OBJECT (pager->applet), "change_background", G_CALLBACK (applet_change_background), pager); panel_applet_set_background_widget (PANEL_APPLET (pager->applet), GTK_WIDGET (pager->applet)); panel_applet_setup_menu_from_file (PANEL_APPLET (pager->applet), NULL, "GNOME_WorkspaceSwitcherApplet.xml", NULL, pager_menu_verbs, pager); if (panel_applet_get_locked_down (PANEL_APPLET (pager->applet))) { BonoboUIComponent *popup_component; popup_component = panel_applet_get_popup_component (PANEL_APPLET (pager->applet)); bonobo_ui_component_set_prop (popup_component, "/commands/PagerPreferences", "hidden", "1", NULL); } popup_component = panel_applet_get_popup_component (PANEL_APPLET (pager->applet)); launchpad_integration_add_bonobo_ui(popup_component, "/popups/button3/LaunchpadItems"); return TRUE; }
gboolean window_list_applet_fill (PanelApplet *applet) { TasklistData *tasklist; GError *error; GConfValue *value; gint sizepref; tasklist = g_new0 (TasklistData, 1); tasklist->applet = GTK_WIDGET (applet); panel_applet_set_flags (PANEL_APPLET (tasklist->applet), PANEL_APPLET_EXPAND_MAJOR | PANEL_APPLET_EXPAND_MINOR | PANEL_APPLET_HAS_HANDLE); panel_applet_add_preferences (applet, "/schemas/apps/window_list_applet/prefs", NULL); setup_gconf (tasklist); error = NULL; tasklist->include_all_workspaces = panel_applet_gconf_get_bool (applet, "display_all_workspaces", &error); if (error) { g_error_free (error); tasklist->include_all_workspaces = FALSE; /* Default value */ } error = NULL; tasklist->grouping = -1; value = panel_applet_gconf_get_value (applet, "group_windows", &error); if (error) { g_error_free (error); } else if (value) { tasklist->grouping = get_grouping_type (value); gconf_value_free (value); } if (tasklist->grouping < 0) tasklist->grouping = WNCK_TASKLIST_AUTO_GROUP; /* Default value */ error = NULL; tasklist->move_unminimized_windows = panel_applet_gconf_get_bool (applet, "move_unminimized_windows", &error); if (error) { g_error_free (error); tasklist->move_unminimized_windows = TRUE; /* Default value */ } tasklist->size = panel_applet_get_size (applet); switch (panel_applet_get_orient (applet)) { case PANEL_APPLET_ORIENT_LEFT: case PANEL_APPLET_ORIENT_RIGHT: tasklist->orientation = GTK_ORIENTATION_VERTICAL; break; case PANEL_APPLET_ORIENT_UP: case PANEL_APPLET_ORIENT_DOWN: default: tasklist->orientation = GTK_ORIENTATION_HORIZONTAL; break; } tasklist->screen = wncklet_get_screen (tasklist->applet); /* because the tasklist doesn't respond to signals at the moment */ wnck_screen_force_update (tasklist->screen); tasklist->tasklist = wnck_tasklist_new (tasklist->screen); wnck_tasklist_set_icon_loader (WNCK_TASKLIST (tasklist->tasklist), icon_loader_func, tasklist, NULL); /* get size preferences */ error = NULL; sizepref = panel_applet_gconf_get_int (applet, "minimum_size", &error); if (error) { sizepref = 50; /* Default value */ g_error_free (error); } if (tasklist->orientation == GTK_ORIENTATION_HORIZONTAL) wnck_tasklist_set_minimum_width (WNCK_TASKLIST (tasklist->tasklist), sizepref); else wnck_tasklist_set_minimum_height (WNCK_TASKLIST (tasklist->tasklist), sizepref); error = NULL; sizepref = panel_applet_gconf_get_int (applet, "maximum_size", &error); if (error) { sizepref = 4096; /* Default value */ g_error_free (error); } tasklist->maximum_size = sizepref; g_signal_connect (G_OBJECT (tasklist->tasklist), "destroy", G_CALLBACK (destroy_tasklist), tasklist); g_signal_connect (G_OBJECT (tasklist->applet), "size_request", G_CALLBACK (applet_size_request), tasklist); tasklist_update (tasklist); gtk_widget_show (tasklist->tasklist); gtk_container_add (GTK_CONTAINER (tasklist->applet), tasklist->tasklist); g_signal_connect (G_OBJECT (tasklist->applet), "realize", G_CALLBACK (applet_realized), tasklist); g_signal_connect (G_OBJECT (tasklist->applet), "change_orient", G_CALLBACK (applet_change_orient), tasklist); g_signal_connect (G_OBJECT (tasklist->applet), "change_size", G_CALLBACK (applet_change_pixel_size), tasklist); g_signal_connect (G_OBJECT (tasklist->applet), "change_background", G_CALLBACK (applet_change_background), tasklist); panel_applet_set_background_widget (PANEL_APPLET (tasklist->applet), GTK_WIDGET (tasklist->applet)); panel_applet_setup_menu_from_file (PANEL_APPLET (tasklist->applet), NULL, "GNOME_WindowListApplet.xml", NULL, tasklist_menu_verbs, tasklist); if (panel_applet_get_locked_down (PANEL_APPLET (tasklist->applet))) { BonoboUIComponent *popup_component; popup_component = panel_applet_get_popup_component (PANEL_APPLET (tasklist->applet)); bonobo_ui_component_set_prop (popup_component, "/commands/TasklistPreferences", "hidden", "1", NULL); } gtk_widget_show (tasklist->applet); return TRUE; }