static void launcher_new_saved (GtkWidget *dialog, gpointer data) { PanelWidget *panel; PanelObjectPackType pack_type; int pack_index; const char *uri; pack_type = GPOINTER_TO_INT (g_object_get_data (G_OBJECT (dialog), "pack-type")); panel = g_object_get_data (G_OBJECT (dialog), "panel"); pack_index = panel_widget_get_new_pack_index (panel, pack_type); uri = panel_ditem_editor_get_uri (PANEL_DITEM_EDITOR (dialog)); if (panel_launcher_get_filename (uri) != NULL) uri = panel_launcher_get_filename (uri); panel_launcher_create (panel->toplevel, pack_type, pack_index, uri); }
static char * launcher_save_uri (PanelDItemEditor *dialog, gpointer data) { GKeyFile *key_file; char *type; char *exec_or_uri; Launcher *launcher; char *new_uri; const char *uri; key_file = panel_ditem_editor_get_key_file (dialog); type = panel_key_file_get_string (key_file, "Type"); if (type && !strcmp (type, "Application")) exec_or_uri = panel_key_file_get_string (key_file, "Exec"); else if (type && !strcmp (type, "Link")) exec_or_uri = panel_key_file_get_string (key_file, "URL"); else exec_or_uri = panel_key_file_get_string (key_file, "Name"); g_free (type); launcher = (Launcher *) data; if (launcher) new_uri = panel_launcher_find_writable_uri (launcher->location, exec_or_uri); else new_uri = panel_launcher_find_writable_uri (NULL, exec_or_uri); g_free (exec_or_uri); uri = panel_ditem_editor_get_uri (dialog); if (!uri || (new_uri && strcmp (new_uri, uri))) return new_uri; g_free (new_uri); return NULL; }
static void launcher_saved (GtkWidget *dialog, Launcher *launcher) { const char *uri; uri = panel_ditem_editor_get_uri (PANEL_DITEM_EDITOR (dialog)); if (panel_launcher_get_filename (uri) != NULL) uri = panel_launcher_get_filename (uri); if (uri && launcher->location && strcmp (uri, launcher->location)) { GSettings *settings; settings = panel_layout_get_instance_settings (launcher->info->settings, PANEL_LAUNCHER_SCHEMA); g_settings_set_string (settings, PANEL_LOCATION_KEY, uri); g_object_unref (settings); if (launcher->location) g_free (launcher->location); launcher->location = g_strdup (uri); } }
static void panel_ditem_editor_get_property (GObject *object, guint prop_id, GValue *value, GParamSpec *pspec) { PanelDItemEditor *dialog; g_return_if_fail (PANEL_IS_DITEM_EDITOR (object)); dialog = PANEL_DITEM_EDITOR (object); switch (prop_id) { case PROP_KEYFILE: g_value_set_pointer (value, panel_ditem_editor_get_key_file (dialog)); break; case PROP_URI: g_value_set_string (value, panel_ditem_editor_get_uri (dialog)); break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec); break; } }