char * panel_layout_object_create_start (PanelObjectType type, const char *type_detail, const char *toplevel_id, PanelObjectPackType pack_type, int pack_index, GSettings **settings) { char *unique_id; char *path; GSettings *settings_object; char *iid; if (settings) *settings = NULL; iid = panel_object_type_to_iid (type, type_detail); if (!iid) return NULL; unique_id = panel_layout_find_free_id (PANEL_LAYOUT_OBJECT_ID_LIST_KEY, PANEL_OBJECT_SCHEMA, PANEL_LAYOUT_OBJECT_PATH, NULL, -1); path = g_strdup_printf ("%s%s/", PANEL_LAYOUT_OBJECT_PATH, unique_id); settings_object = g_settings_new_with_path (PANEL_OBJECT_SCHEMA, path); g_free (path); g_settings_set_string (settings_object, PANEL_OBJECT_IID_KEY, iid); g_settings_set_string (settings_object, PANEL_OBJECT_TOPLEVEL_ID_KEY, toplevel_id); g_settings_set_enum (settings_object, PANEL_OBJECT_PACK_TYPE_KEY, pack_type); g_settings_set_int (settings_object, PANEL_OBJECT_PACK_INDEX_KEY, pack_index); g_free (iid); if (settings) *settings = settings_object; else g_object_unref (settings_object); return unique_id; }
char * panel_layout_object_create_start (PanelObjectType type, const char *type_detail, const char *toplevel_id, PanelObjectPackType pack_type, int pack_index, GVariant *initial_settings, GSettings **settings) { char *unique_id; char *path; GSettings *settings_object; char *iid; char *try_id; if (settings) *settings = NULL; iid = panel_object_type_to_iid (type, type_detail); if (!iid) return NULL; try_id = panel_layout_object_generate_id (iid); unique_id = panel_layout_find_free_id (PANEL_LAYOUT_OBJECT_ID_LIST_KEY, PANEL_OBJECT_SCHEMA, PANEL_LAYOUT_OBJECT_PATH, try_id); path = g_strdup_printf ("%s%s/", PANEL_LAYOUT_OBJECT_PATH, unique_id); settings_object = g_settings_new_with_path (PANEL_OBJECT_SCHEMA, path); g_free (path); g_settings_set_string (settings_object, PANEL_OBJECT_IID_KEY, iid); g_settings_set_string (settings_object, PANEL_OBJECT_TOPLEVEL_ID_KEY, toplevel_id); g_settings_set_enum (settings_object, PANEL_OBJECT_PACK_TYPE_KEY, pack_type); g_settings_set_int (settings_object, PANEL_OBJECT_PACK_INDEX_KEY, pack_index); if (initial_settings != NULL) { GSettings *tmp; path = g_strdup_printf ("%s%s/initial-settings/", PANEL_LAYOUT_OBJECT_PATH, unique_id); tmp = g_settings_new_with_path ("org.gnome.gnome-panel.applet.initial-settings", path); g_free (path); g_settings_set_value (tmp, "settings", initial_settings); g_object_unref (tmp); } g_free (try_id); g_free (iid); if (settings) *settings = settings_object; else g_object_unref (settings_object); return unique_id; }