void file_actions_update (GimpActionGroup *group, gpointer data) { Gimp *gimp = action_data_get_gimp (data); GimpImage *image = action_data_get_image (data); GimpDrawable *drawable = NULL; GFile *file = NULL; GFile *source = NULL; GFile *export = NULL; gboolean show_overwrite = FALSE; if (image) { drawable = gimp_image_get_active_drawable (image); file = gimp_image_get_file (image); source = gimp_image_get_imported_file (image); export = gimp_image_get_exported_file (image); }
void gimp_export_dialog_set_image (GimpExportDialog *dialog, Gimp *gimp, GimpImage *image) { GFile *dir_file = NULL; GFile *name_file = NULL; GFile *ext_file = NULL; gchar *basename; g_return_if_fail (GIMP_IS_EXPORT_DIALOG (dialog)); g_return_if_fail (GIMP_IS_IMAGE (image)); GIMP_FILE_DIALOG (dialog)->image = image; gimp_file_dialog_set_file_proc (GIMP_FILE_DIALOG (dialog), NULL); /* * Priority of default paths for Export: * * 1. Last Export path * 2. Path of import source * 3. Path of XCF source * 4. Last path of any save to XCF * 5. Last Export path of any document * 6. The default path (usually the OS 'Documents' path) */ dir_file = gimp_image_get_exported_file (image); if (! dir_file) dir_file = g_object_get_data (G_OBJECT (image), "gimp-image-source-file"); if (! dir_file) dir_file = gimp_image_get_imported_file (image); if (! dir_file) dir_file = gimp_image_get_file (image); if (! dir_file) dir_file = g_object_get_data (G_OBJECT (gimp), GIMP_FILE_SAVE_LAST_FILE_KEY); if (! dir_file) dir_file = g_object_get_data (G_OBJECT (gimp), GIMP_FILE_EXPORT_LAST_FILE_KEY); if (! dir_file) dir_file = gimp_export_dialog_get_default_folder (gimp); /* Priority of default basenames for Export: * * 1. Last Export name * 3. Save URI * 2. Source file name * 3. 'Untitled' */ name_file = gimp_image_get_exported_file (image); if (! name_file) name_file = gimp_image_get_file (image); if (! name_file) name_file = gimp_image_get_imported_file (image); if (! name_file) name_file = gimp_image_get_untitled_file (image); /* Priority of default type/extension for Export: * * 1. Type of last Export * 2. Type of the image Import * 3. Type of latest Export of any document * 4. .png */ ext_file = gimp_image_get_exported_file (image); if (! ext_file) ext_file = gimp_image_get_imported_file (image); if (! ext_file) ext_file = g_object_get_data (G_OBJECT (gimp), GIMP_FILE_EXPORT_LAST_FILE_KEY); if (ext_file) g_object_ref (ext_file); else ext_file = g_file_new_for_uri ("file:///we/only/care/about/extension.png"); if (ext_file) { GFile *tmp_file = file_utils_file_with_new_ext (name_file, ext_file); basename = g_path_get_basename (gimp_file_get_utf8_name (tmp_file)); g_object_unref (tmp_file); g_object_unref (ext_file); } else { basename = g_path_get_basename (gimp_file_get_utf8_name (name_file)); } if (g_file_query_file_type (dir_file, G_FILE_QUERY_INFO_NONE, NULL) == G_FILE_TYPE_DIRECTORY) { gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (dialog), dir_file, NULL); } else { GFile *parent_file = g_file_get_parent (dir_file); gtk_file_chooser_set_current_folder_file (GTK_FILE_CHOOSER (dialog), parent_file, NULL); g_object_unref (parent_file); } gtk_file_chooser_set_current_name (GTK_FILE_CHOOSER (dialog), basename); }
static gboolean gimp_display_shell_close_time_changed (GimpMessageBox *box) { GimpImage *image = g_object_get_data (G_OBJECT (box), "gimp-image"); gint64 dirty_time = gimp_image_get_dirty_time (image); gchar *time_text = NULL; gchar *export_text = NULL; if (dirty_time) { gint hours = 0; gint minutes = 0; gimp_time_since (dirty_time, &hours, &minutes); if (hours > 0) { if (hours > 1 || minutes == 0) { time_text = g_strdup_printf (ngettext ("If you don't save the image, " "changes from the last hour " "will be lost.", "If you don't save the image, " "changes from the last %d " "hours will be lost.", hours), hours); } else { time_text = g_strdup_printf (ngettext ("If you don't save the image, " "changes from the last hour " "and %d minute will be lost.", "If you don't save the image, " "changes from the last hour " "and %d minutes will be lost.", minutes), minutes); } } else { time_text = g_strdup_printf (ngettext ("If you don't save the image, " "changes from the last minute " "will be lost.", "If you don't save the image, " "changes from the last %d " "minutes will be lost.", minutes), minutes); } } if (! gimp_image_is_export_dirty (image)) { GFile *file; file = gimp_image_get_exported_file (image); if (! file) file = gimp_image_get_imported_file (image); export_text = g_strdup_printf (_("The image has been exported to '%s'."), gimp_file_get_utf8_name (file)); } if (time_text && export_text) gimp_message_box_set_text (box, "%s\n\n%s", time_text, export_text); else if (time_text || export_text) gimp_message_box_set_text (box, "%s", time_text ? time_text : export_text); else gimp_message_box_set_text (box, "%s", time_text); g_free (time_text); g_free (export_text); return TRUE; }