static void save_button_clicked_cb (GtkButton *button, DialogData *data) { GthDateTime *date_time; GFile *gio_file; char *buffer; gsize size; if (strcmp (gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("name_entry"))), "") != 0) { GFile *parent; char *uri; char *clean_name; char *display_name; GFile *new_file; parent = g_file_get_parent (data->original_file); uri = g_file_get_uri (data->original_file); clean_name = _g_filename_clear_for_file (gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("name_entry")))); display_name = g_strconcat (clean_name, _g_uri_get_file_extension (uri), NULL); new_file = g_file_get_child_for_display_name (parent, display_name, NULL); if ((new_file != NULL) && ! g_file_equal (new_file, data->original_file)) gth_file_data_set_file (data->file_data, new_file); _g_object_unref (new_file); g_free (display_name); g_free (clean_name); g_free (uri); g_object_unref (parent); } gth_catalog_set_name (data->catalog, gtk_entry_get_text (GTK_ENTRY (GET_WIDGET ("name_entry")))); date_time = gth_datetime_new (); gth_time_selector_get_value (GTH_TIME_SELECTOR (data->time_selector), date_time); gth_catalog_set_date (data->catalog, date_time); gth_datetime_free (date_time); /* invoke the hook to save derived catalogs such as searches */ gth_hook_invoke ("dlg-catalog-properties-save", data->builder, data->file_data, data->catalog); gio_file = gth_catalog_file_to_gio_file (data->file_data->file); buffer = gth_catalog_to_data (data->catalog, &size); _g_file_write_async (gio_file, buffer, size, TRUE, G_PRIORITY_DEFAULT, NULL, catalog_saved_cb, data); g_object_unref (gio_file); }
static void set_current_destination_file (GthPixbufListTask *self) { GthFileData *file_data; char *display_name; GFile *parent; GFile *destination; file_data = self->priv->current->data; if (self->priv->mime_type != NULL) { char *no_ext; GthPixbufSaver *saver; no_ext = _g_uri_remove_extension (g_file_info_get_display_name (file_data->info)); saver = gth_main_get_pixbuf_saver (self->priv->mime_type); g_return_if_fail (saver != NULL); display_name = g_strconcat (no_ext, ".", gth_pixbuf_saver_get_default_ext (saver), NULL); gth_file_data_set_mime_type (file_data, self->priv->mime_type); g_object_unref (saver); g_free (no_ext); } else display_name = g_strdup (g_file_info_get_display_name (file_data->info)); if (self->priv->destination_folder != NULL) parent = g_object_ref (self->priv->destination_folder); else parent = g_file_get_parent (file_data->file); destination = g_file_get_child_for_display_name (parent, display_name, NULL); gth_file_data_set_file (file_data, destination); g_object_unref (destination); g_object_unref (parent); g_free (display_name); }