static GthFileData * base_get_file_data (GthFileSource *file_source, GFile *file, GFileInfo *info) { return gth_file_data_new (file, info); }
void gth_edit_iptc_page_real_update_info (GthEditCommentPage *base, GFileInfo *info, gboolean only_modified_fields) { GthEditIptcPage *self; GthFileData *file_data; double v; char *s; self = GTH_EDIT_IPTC_PAGE (base); if (! self->priv->supported) return; file_data = gth_file_data_new (NULL, self->priv->info); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::Copyright", "copyright_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::Credit", "credit_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::Byline", "byline_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::BylineTitle", "byline_title_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::CountryName", "country_name_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::CountryCode", "country_code_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::City", "city_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::Language", "language_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::ObjectName", "object_name_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::Source", "source_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Envelope::Destination", "destination_entry"); set_attribute_from_entry (self, info, file_data, only_modified_fields, "Iptc::Application2::ProvinceState", "state_name_entry"); /* urgency */ v = gtk_adjustment_get_value (GTK_ADJUSTMENT (GET_WIDGET ("urgency_adjustment"))); s = g_strdup_printf ("%1.g", v); if (! only_modified_fields || ! gth_file_data_attribute_equal_int (file_data, "Iptc::Application2::Urgency", s)) { GthMetadata *metadata; metadata = g_object_new (GTH_TYPE_METADATA, "id", "Iptc::Application2::Urgency", "raw", s, "formatted", s, NULL); g_file_info_set_attribute_object (info, "Iptc::Application2::Urgency", G_OBJECT (metadata)); g_object_unref (metadata); } g_free (s); g_object_unref (file_data); }
static void save_as_response_cb (GtkDialog *file_sel, int response, SaveData *save_data) { GFile *file; const char *mime_type; GFile *folder; char *folder_uri; GthTask *task; if (response != GTK_RESPONSE_OK) { GthMediaViewerPage *page = save_data->page; if (save_data->playing_before_screenshot) gst_element_set_state (gth_media_viewer_page_get_playbin (page), GST_STATE_PLAYING); save_date_free (save_data); gtk_widget_destroy (GTK_WIDGET (file_sel)); return; } if (! gth_file_chooser_dialog_get_file (GTH_FILE_CHOOSER_DIALOG (file_sel), &file, &mime_type)) return; folder = g_file_get_parent (file); folder_uri = g_file_get_uri (folder); g_settings_set_string (save_data->settings, PREF_GSTREAMER_TOOLS_SCREESHOT_LOCATION, folder_uri); save_data->file_data = gth_file_data_new (file, NULL); gth_file_data_set_mime_type (save_data->file_data, mime_type); task = gth_save_image_task_new (save_data->image, mime_type, save_data->file_data, GTH_OVERWRITE_RESPONSE_YES); g_signal_connect (task, "completed", G_CALLBACK (save_screenshot_task_completed_cb), save_data); gth_browser_exec_task (GTH_BROWSER (save_data->browser), task, FALSE); gtk_widget_destroy (GTK_WIDGET (file_sel)); g_free (folder_uri); g_object_unref (folder); g_object_unref (file); }
static void pixbuf_task_save_current_pixbuf (GthPixbufListTask *self, GFile *file, gboolean replace) { GthFileData *file_data; if (file != NULL) file_data = gth_file_data_new (file, ((GthFileData *) self->priv->current->data)->info); else file_data = g_object_ref (self->priv->current->data); _g_object_unref (self->priv->new_pixbuf); self->priv->new_pixbuf = g_object_ref (GTH_PIXBUF_TASK (self->priv->task)->dest); _gdk_pixbuf_save_async (self->priv->new_pixbuf, file_data, gth_file_data_get_mime_type (file_data), replace, pixbuf_saved_cb, self); g_object_unref (file_data); }
static GthFileData * create_example_file_data (void) { GFile *file; GFileInfo *info; GthFileData *file_data; GthMetadata *metadata; file = g_file_new_for_uri ("file://home/user/document.txt"); info = g_file_info_new (); file_data = gth_file_data_new (file, info); metadata = g_object_new (GTH_TYPE_METADATA, "raw", "2005:03:09 13:23:51", "formatted", "2005:03:09 13:23:51", NULL); g_file_info_set_attribute_object (info, "Embedded::Photo::DateTimeOriginal", G_OBJECT (metadata)); g_object_unref (metadata); g_object_unref (info); g_object_unref (file); return file_data; }
void gth_browser_activate_action_tool_desktop_background (GtkAction *action, GthBrowser *browser) { WallpaperData *wdata; gboolean saving_wallpaper = FALSE; GList *items; GList *file_list; GthFileData *file_data; const char *mime_type; wdata = wallpaper_data_new (browser); items = gth_file_selection_get_selected (GTH_FILE_SELECTION (gth_browser_get_file_list_view (browser))); file_list = gth_file_list_get_files (GTH_FILE_LIST (gth_browser_get_file_list (browser)), items); file_data = (file_list != NULL) ? file_list->data : NULL; mime_type = (file_data != NULL) ? gth_file_data_get_mime_type (file_data) : NULL; if (gth_main_extension_is_active ("image_viewer") && (gth_browser_get_file_modified (browser) || ! _gdk_pixbuf_mime_type_is_readable (mime_type))) { GtkWidget *viewer_page; viewer_page = gth_browser_get_viewer_page (browser); if (viewer_page != NULL) { GthImage *image; GthTask *task; image = gth_image_new_for_surface (gth_image_viewer_page_get_image (GTH_IMAGE_VIEWER_PAGE (viewer_page))); file_data = gth_file_data_new (wdata->new_style.file, NULL); task = gth_save_image_task_new (image, "image/jpeg", file_data, GTH_OVERWRITE_RESPONSE_YES); g_signal_connect (task, "completed", G_CALLBACK (save_wallpaper_task_completed_cb), wdata); gth_browser_exec_task (GTH_BROWSER (browser), task, FALSE); saving_wallpaper = TRUE; _g_object_unref (task); g_object_unref (image); } } if (saving_wallpaper) return; if (file_data == NULL) return; if (g_file_is_native (file_data->file)) { _g_object_unref (wdata->new_style.file); wdata->new_style.file = g_file_dup (file_data->file); wallpaper_data_set (wdata); } else g_file_copy_async (file_data->file, wdata->new_style.file, G_FILE_COPY_OVERWRITE, G_PRIORITY_DEFAULT, NULL, NULL, NULL, copy_wallpaper_ready_cb, wdata); _g_object_list_unref (file_list); _gtk_tree_path_list_free (items); }
static void for_each_file_func (GFile *file, GFileInfo *info, gpointer user_data) { GthOrganizeTask *self = user_data; GthFileData *file_data; char *key; GTimeVal timeval; GthCatalog *catalog; if (g_file_info_get_file_type (info) != G_FILE_TYPE_REGULAR) return; key = NULL; file_data = gth_file_data_new (file, info); switch (self->priv->group_policy) { case GTH_GROUP_POLICY_DIGITALIZED_DATE: { GObject *metadata; metadata = g_file_info_get_attribute_object (info, "Embedded::Photo::DateTimeOriginal"); if (metadata != NULL) { if (_g_time_val_from_exif_date (gth_metadata_get_raw (GTH_METADATA (metadata)), &timeval)) key = _g_time_val_strftime (&timeval, KEY_FORMAT); } } break; case GTH_GROUP_POLICY_MODIFIED_DATE: timeval = *gth_file_data_get_modification_time (file_data); key = _g_time_val_strftime (&timeval, KEY_FORMAT); break; } if (key == NULL) return; catalog = g_hash_table_lookup (self->priv->catalogs, key); if (catalog == NULL) { GthDateTime *date_time; GFile *catalog_file; char *name; GtkTreeIter iter; date_time = gth_datetime_new (); gth_datetime_from_timeval (date_time, &timeval); catalog_file = gth_catalog_get_file_for_date (date_time); catalog = gth_catalog_load_from_file (catalog_file); if (catalog == NULL) catalog = gth_catalog_new (); gth_catalog_set_for_date (catalog, date_time); g_hash_table_insert (self->priv->catalogs, g_strdup (key), catalog); name = gth_datetime_strftime (date_time, "%x"); gtk_list_store_append (self->priv->results_liststore, &iter); gtk_list_store_set (self->priv->results_liststore, &iter, KEY_COLUMN, key, NAME_COLUMN, name, CARDINALITY_COLUMN, 0, CREATE_CATALOG_COLUMN, TRUE, ICON_COLUMN, self->priv->icon_pixbuf, -1); self->priv->n_catalogs++; g_free (name); g_object_unref (catalog_file); gth_datetime_free (date_time); } if (catalog != NULL) { GtkTreeIter iter; int n = 0; if (gtk_tree_model_get_iter_first (GTK_TREE_MODEL (self->priv->results_liststore), &iter)) { do { char *k; gtk_tree_model_get (GTK_TREE_MODEL (self->priv->results_liststore), &iter, KEY_COLUMN, &k, CARDINALITY_COLUMN, &n, -1); if (g_strcmp0 (k, key) == 0) { gtk_list_store_set (self->priv->results_liststore, &iter, CARDINALITY_COLUMN, n + 1, -1); self->priv->n_files++; g_free (k); break; } g_free (k); } while (gtk_tree_model_iter_next (GTK_TREE_MODEL (self->priv->results_liststore), &iter)); } gth_catalog_insert_file (catalog, file_data->file, -1); } g_object_unref (file_data); g_free (key); }