void panel_menu_button_load_from_mateconf (PanelWidget *panel, gboolean locked, int position, gboolean exactpos, const char *id) { MateConfClient *client; const char *key; char *menu_path; char *custom_icon; char *tooltip; gboolean use_menu_path; gboolean use_custom_icon; gboolean has_arrow; client = panel_mateconf_get_client (); key = panel_mateconf_full_key (PANEL_MATECONF_OBJECTS, id, "menu_path"); menu_path = mateconf_client_get_string (client, key, NULL); key = panel_mateconf_full_key (PANEL_MATECONF_OBJECTS, id, "custom_icon"); custom_icon = mateconf_client_get_string (client, key, NULL); key = panel_mateconf_full_key (PANEL_MATECONF_OBJECTS, id, "tooltip"); tooltip = mateconf_client_get_string (client, key, NULL); key = panel_mateconf_full_key (PANEL_MATECONF_OBJECTS, id, "use_menu_path"); use_menu_path = mateconf_client_get_bool (client, key, NULL); key = panel_mateconf_full_key (PANEL_MATECONF_OBJECTS, id, "use_custom_icon"); use_custom_icon = mateconf_client_get_bool (client, key, NULL); key = panel_mateconf_full_key (PANEL_MATECONF_OBJECTS, id, "has_arrow"); has_arrow = mateconf_client_get_bool (client, key, NULL); panel_menu_button_load (menu_path, use_menu_path, custom_icon, use_custom_icon, tooltip, panel, locked, position, exactpos, has_arrow, id); g_free (menu_path); g_free (custom_icon); g_free (tooltip); }
void panel_menu_button_load_from_gsettings (PanelWidget *panel, gboolean locked, int position, gboolean exactpos, const char *id) { GSettings *settings; gchar *path; char *menu_path; char *custom_icon; char *tooltip; gboolean use_menu_path; gboolean use_custom_icon; gboolean has_arrow; path = g_strdup_printf (PANEL_OBJECT_PATH "%s/", id); settings = g_settings_new_with_path (PANEL_OBJECT_SCHEMA, path); menu_path = g_settings_get_string (settings, PANEL_OBJECT_MENU_PATH_KEY); custom_icon = g_settings_get_string (settings, PANEL_OBJECT_CUSTOM_ICON_KEY); tooltip = g_settings_get_string (settings, PANEL_OBJECT_TOOLTIP_KEY); use_menu_path = g_settings_get_boolean (settings, PANEL_OBJECT_USE_MENU_PATH_KEY); use_custom_icon = g_settings_get_boolean (settings, PANEL_OBJECT_USE_CUSTOM_ICON_KEY); has_arrow = g_settings_get_boolean (settings, PANEL_OBJECT_HAS_ARROW_KEY); panel_menu_button_load (menu_path, use_menu_path, custom_icon, use_custom_icon, tooltip, panel, locked, position, exactpos, has_arrow, id); g_free (menu_path); g_free (custom_icon); g_free (tooltip); g_free (path); g_object_unref (settings); }
static gboolean panel_object_loader_idle_handler (gpointer dummy) { PanelObjectToLoad *object = NULL; PanelToplevel *toplevel = NULL; PanelWidget *panel_widget; GSList *l; char *iid = NULL; PanelObjectType object_type; char *object_type_detail = NULL; gboolean ret; if (!panel_objects_to_load) { panel_object_loader_have_idle = FALSE; return FALSE; } for (l = panel_objects_to_load; l; l = l->next) { object = l->data; toplevel = panel_toplevel_get_by_id (object->toplevel_id); if (toplevel) break; } if (!l) { /* All the remaining objects don't have a panel */ for (l = panel_objects_to_load; l; l = l->next) free_object_to_load (l->data); g_slist_free (panel_objects_to_load); panel_objects_to_load = NULL; panel_object_loader_have_idle = FALSE; if (panel_objects_loading == NULL) { /* unhide any potential initially hidden toplevel */ panel_object_loader_queue_initial_unhide_toplevels (NULL); } return FALSE; } panel_objects_to_load = g_slist_delete_link (panel_objects_to_load, l); panel_objects_loading = g_slist_append (panel_objects_loading, object); panel_widget = panel_toplevel_get_panel_widget (toplevel); iid = g_settings_get_string (object->settings, PANEL_OBJECT_IID_KEY); ret = panel_object_iid_to_type (iid, &object_type, &object_type_detail); if (!ret) { g_printerr ("Object '%s' has an invalid iid ('%s')\n", object->id, iid); panel_object_loader_stop_loading (object->id); g_free (iid); return TRUE; } g_free (iid); switch (object_type) { case PANEL_OBJECT_APPLET: panel_applet_frame_load (panel_widget, object->id, object->settings); break; case PANEL_OBJECT_MENU: panel_menu_button_load (panel_widget, object->id, object->settings); break; case PANEL_OBJECT_LAUNCHER: launcher_load (panel_widget, object->id, object->settings); break; case PANEL_OBJECT_ACTION: panel_action_button_load (panel_widget, object->id, object->settings, object_type_detail); break; case PANEL_OBJECT_MENU_BAR: panel_menu_bar_load (panel_widget, object->id, object->settings); break; case PANEL_OBJECT_SEPARATOR: panel_separator_load (panel_widget, object->id, object->settings); break; case PANEL_OBJECT_USER_MENU: panel_user_menu_load (panel_widget, object->id, object->settings); break; default: g_assert_not_reached (); break; } /* We load applets asynchronously, so we specifically don't call * panel_object_loader_stop_loading() for this type. */ if (object_type != PANEL_OBJECT_APPLET) panel_object_loader_stop_loading (object->id); return TRUE; }