app: get_default_folder() is now a class method.
This commit is contained in:
@ -47,8 +47,6 @@
|
|||||||
#include "gimp-intl.h"
|
#include "gimp-intl.h"
|
||||||
|
|
||||||
|
|
||||||
static GFile * gimp_export_dialog_get_default_folder (Gimp *gimp);
|
|
||||||
|
|
||||||
G_DEFINE_TYPE (GimpExportDialog, gimp_export_dialog,
|
G_DEFINE_TYPE (GimpExportDialog, gimp_export_dialog,
|
||||||
GIMP_TYPE_FILE_DIALOG)
|
GIMP_TYPE_FILE_DIALOG)
|
||||||
|
|
||||||
@ -99,6 +97,7 @@ gimp_export_dialog_set_image (GimpExportDialog *dialog,
|
|||||||
Gimp *gimp,
|
Gimp *gimp,
|
||||||
GimpImage *image)
|
GimpImage *image)
|
||||||
{
|
{
|
||||||
|
GimpFileDialog *file_dialog;
|
||||||
GFile *dir_file = NULL;
|
GFile *dir_file = NULL;
|
||||||
GFile *name_file = NULL;
|
GFile *name_file = NULL;
|
||||||
GFile *ext_file = NULL;
|
GFile *ext_file = NULL;
|
||||||
@ -107,9 +106,11 @@ gimp_export_dialog_set_image (GimpExportDialog *dialog,
|
|||||||
g_return_if_fail (GIMP_IS_EXPORT_DIALOG (dialog));
|
g_return_if_fail (GIMP_IS_EXPORT_DIALOG (dialog));
|
||||||
g_return_if_fail (GIMP_IS_IMAGE (image));
|
g_return_if_fail (GIMP_IS_IMAGE (image));
|
||||||
|
|
||||||
GIMP_FILE_DIALOG (dialog)->image = image;
|
file_dialog = GIMP_FILE_DIALOG (dialog);
|
||||||
|
|
||||||
gimp_file_dialog_set_file_proc (GIMP_FILE_DIALOG (dialog), NULL);
|
file_dialog->image = image;
|
||||||
|
|
||||||
|
gimp_file_dialog_set_file_proc (file_dialog, NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Priority of default paths for Export:
|
* Priority of default paths for Export:
|
||||||
@ -143,7 +144,7 @@ gimp_export_dialog_set_image (GimpExportDialog *dialog,
|
|||||||
GIMP_FILE_EXPORT_LAST_FILE_KEY);
|
GIMP_FILE_EXPORT_LAST_FILE_KEY);
|
||||||
|
|
||||||
if (! dir_file)
|
if (! dir_file)
|
||||||
dir_file = gimp_export_dialog_get_default_folder (gimp);
|
dir_file = gimp_file_dialog_get_default_folder (file_dialog);
|
||||||
|
|
||||||
/* Priority of default basenames for Export:
|
/* Priority of default basenames for Export:
|
||||||
*
|
*
|
||||||
@ -216,43 +217,3 @@ gimp_export_dialog_set_image (GimpExportDialog *dialog,
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* private functions */
|
/* private functions */
|
||||||
|
|
||||||
static GFile *
|
|
||||||
gimp_export_dialog_get_default_folder (Gimp *gimp)
|
|
||||||
{
|
|
||||||
if (gimp->default_folder)
|
|
||||||
{
|
|
||||||
return gimp->default_folder;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GFile *file = g_object_get_data (G_OBJECT (gimp),
|
|
||||||
"gimp-documents-folder");
|
|
||||||
|
|
||||||
if (! file)
|
|
||||||
{
|
|
||||||
gchar *path;
|
|
||||||
|
|
||||||
/* Make sure it ends in '/' */
|
|
||||||
path = g_build_path (G_DIR_SEPARATOR_S,
|
|
||||||
g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS),
|
|
||||||
G_DIR_SEPARATOR_S,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
/* Paranoia fallback, see bug #722400 */
|
|
||||||
if (! path)
|
|
||||||
path = g_build_path (G_DIR_SEPARATOR_S,
|
|
||||||
g_get_home_dir (),
|
|
||||||
G_DIR_SEPARATOR_S,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
file = g_file_new_for_path (path);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
g_object_set_data_full (G_OBJECT (gimp), "gimp-documents-folder",
|
|
||||||
file, (GDestroyNotify) g_object_unref);
|
|
||||||
}
|
|
||||||
|
|
||||||
return file;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -134,6 +134,7 @@ static void gimp_file_dialog_set_state (GimpFileDialog *di
|
|||||||
GimpFileDialogState *state);
|
GimpFileDialogState *state);
|
||||||
static void gimp_file_dialog_state_destroy (GimpFileDialogState *state);
|
static void gimp_file_dialog_state_destroy (GimpFileDialogState *state);
|
||||||
|
|
||||||
|
static GFile * gimp_file_dialog_real_get_default_folder (GimpFileDialog *dialog);
|
||||||
static void gimp_file_dialog_real_save_state (GimpFileDialog *dialog,
|
static void gimp_file_dialog_real_save_state (GimpFileDialog *dialog,
|
||||||
const gchar *state_name);
|
const gchar *state_name);
|
||||||
static void gimp_file_dialog_real_load_state (GimpFileDialog *dialog,
|
static void gimp_file_dialog_real_load_state (GimpFileDialog *dialog,
|
||||||
@ -163,6 +164,7 @@ gimp_file_dialog_class_init (GimpFileDialogClass *klass)
|
|||||||
|
|
||||||
dialog_class->response = gimp_file_dialog_response;
|
dialog_class->response = gimp_file_dialog_response;
|
||||||
|
|
||||||
|
klass->get_default_folder = gimp_file_dialog_real_get_default_folder;
|
||||||
klass->save_state = gimp_file_dialog_real_save_state;
|
klass->save_state = gimp_file_dialog_real_save_state;
|
||||||
klass->load_state = gimp_file_dialog_real_load_state;
|
klass->load_state = gimp_file_dialog_real_load_state;
|
||||||
|
|
||||||
@ -565,6 +567,14 @@ gimp_file_dialog_set_file_proc (GimpFileDialog *dialog,
|
|||||||
file_proc);
|
file_proc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
GFile *
|
||||||
|
gimp_file_dialog_get_default_folder (GimpFileDialog *dialog)
|
||||||
|
{
|
||||||
|
g_return_if_fail (GIMP_IS_FILE_DIALOG (dialog));
|
||||||
|
|
||||||
|
GIMP_FILE_DIALOG_GET_CLASS (dialog)->get_default_folder (dialog);
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
gimp_file_dialog_save_state (GimpFileDialog *dialog,
|
gimp_file_dialog_save_state (GimpFileDialog *dialog,
|
||||||
const gchar *state_name)
|
const gchar *state_name)
|
||||||
@ -1038,6 +1048,49 @@ gimp_file_dialog_state_destroy (GimpFileDialogState *state)
|
|||||||
g_slice_free (GimpFileDialogState, state);
|
g_slice_free (GimpFileDialogState, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static GFile *
|
||||||
|
gimp_file_dialog_real_get_default_folder (GimpFileDialog *dialog)
|
||||||
|
{
|
||||||
|
GFile *file = NULL;
|
||||||
|
|
||||||
|
if (dialog->gimp->default_folder)
|
||||||
|
{
|
||||||
|
file = dialog->gimp->default_folder;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* The default folder is "Documents" for all file dialogs.
|
||||||
|
* Children can reimplement this. */
|
||||||
|
file = g_object_get_data (G_OBJECT (dialog->gimp),
|
||||||
|
"gimp-documents-folder");
|
||||||
|
|
||||||
|
if (! file)
|
||||||
|
{
|
||||||
|
gchar *path;
|
||||||
|
|
||||||
|
/* Make sure it ends in '/' */
|
||||||
|
path = g_build_path (G_DIR_SEPARATOR_S,
|
||||||
|
g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS),
|
||||||
|
G_DIR_SEPARATOR_S,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
/* Paranoia fallback, see bug #722400 */
|
||||||
|
if (! path)
|
||||||
|
path = g_build_path (G_DIR_SEPARATOR_S,
|
||||||
|
g_get_home_dir (),
|
||||||
|
G_DIR_SEPARATOR_S,
|
||||||
|
NULL);
|
||||||
|
|
||||||
|
file = g_file_new_for_path (path);
|
||||||
|
g_free (path);
|
||||||
|
|
||||||
|
g_object_set_data_full (G_OBJECT (dialog->gimp), "gimp-documents-folder",
|
||||||
|
file, (GDestroyNotify) g_object_unref);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return file;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimp_file_dialog_real_save_state (GimpFileDialog *dialog,
|
gimp_file_dialog_real_save_state (GimpFileDialog *dialog,
|
||||||
const gchar *state_name)
|
const gchar *state_name)
|
||||||
|
@ -66,6 +66,8 @@ struct _GimpFileDialogClass
|
|||||||
{
|
{
|
||||||
GtkFileChooserDialogClass parent_class;
|
GtkFileChooserDialogClass parent_class;
|
||||||
|
|
||||||
|
GFile * ( *get_default_folder) (GimpFileDialog *dialog);
|
||||||
|
|
||||||
void (* save_state) (GimpFileDialog *dialog,
|
void (* save_state) (GimpFileDialog *dialog,
|
||||||
const gchar *state_name);
|
const gchar *state_name);
|
||||||
void (* load_state) (GimpFileDialog *dialog,
|
void (* load_state) (GimpFileDialog *dialog,
|
||||||
@ -87,6 +89,8 @@ void gimp_file_dialog_set_sensitive (GimpFileDialog *dialog,
|
|||||||
void gimp_file_dialog_set_file_proc (GimpFileDialog *dialog,
|
void gimp_file_dialog_set_file_proc (GimpFileDialog *dialog,
|
||||||
GimpPlugInProcedure *file_proc);
|
GimpPlugInProcedure *file_proc);
|
||||||
|
|
||||||
|
GFile * gimp_file_dialog_get_default_folder (GimpFileDialog *dialog);
|
||||||
|
|
||||||
void gimp_file_dialog_save_state (GimpFileDialog *dialog,
|
void gimp_file_dialog_save_state (GimpFileDialog *dialog,
|
||||||
const gchar *state_name);
|
const gchar *state_name);
|
||||||
void gimp_file_dialog_load_state (GimpFileDialog *dialog,
|
void gimp_file_dialog_load_state (GimpFileDialog *dialog,
|
||||||
|
@ -62,7 +62,6 @@ static void gimp_save_dialog_save_state (GimpFileDialog *dialo
|
|||||||
static void gimp_save_dialog_load_state (GimpFileDialog *dialog,
|
static void gimp_save_dialog_load_state (GimpFileDialog *dialog,
|
||||||
const gchar *state_name);
|
const gchar *state_name);
|
||||||
|
|
||||||
static GFile * gimp_save_dialog_get_default_folder (Gimp *gimp);
|
|
||||||
static void gimp_save_dialog_add_compat_toggle (GimpSaveDialog *dialog);
|
static void gimp_save_dialog_add_compat_toggle (GimpSaveDialog *dialog);
|
||||||
static void gimp_save_dialog_compat_toggled (GtkToggleButton *button,
|
static void gimp_save_dialog_compat_toggled (GtkToggleButton *button,
|
||||||
GimpSaveDialog *dialog);
|
GimpSaveDialog *dialog);
|
||||||
@ -173,6 +172,7 @@ gimp_save_dialog_set_image (GimpSaveDialog *dialog,
|
|||||||
gboolean close_after_saving,
|
gboolean close_after_saving,
|
||||||
GimpObject *display)
|
GimpObject *display)
|
||||||
{
|
{
|
||||||
|
GimpFileDialog *file_dialog;
|
||||||
GFile *dir_file = NULL;
|
GFile *dir_file = NULL;
|
||||||
GFile *name_file = NULL;
|
GFile *name_file = NULL;
|
||||||
GFile *ext_file = NULL;
|
GFile *ext_file = NULL;
|
||||||
@ -185,12 +185,14 @@ gimp_save_dialog_set_image (GimpSaveDialog *dialog,
|
|||||||
g_return_if_fail (GIMP_IS_SAVE_DIALOG (dialog));
|
g_return_if_fail (GIMP_IS_SAVE_DIALOG (dialog));
|
||||||
g_return_if_fail (GIMP_IS_IMAGE (image));
|
g_return_if_fail (GIMP_IS_IMAGE (image));
|
||||||
|
|
||||||
GIMP_FILE_DIALOG (dialog)->image = image;
|
file_dialog = GIMP_FILE_DIALOG (dialog);
|
||||||
|
|
||||||
|
file_dialog->image = image;
|
||||||
dialog->save_a_copy = save_a_copy;
|
dialog->save_a_copy = save_a_copy;
|
||||||
dialog->close_after_saving = close_after_saving;
|
dialog->close_after_saving = close_after_saving;
|
||||||
dialog->display_to_close = display;
|
dialog->display_to_close = display;
|
||||||
|
|
||||||
gimp_file_dialog_set_file_proc (GIMP_FILE_DIALOG (dialog), NULL);
|
gimp_file_dialog_set_file_proc (file_dialog, NULL);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Priority of default paths for Save:
|
* Priority of default paths for Save:
|
||||||
@ -221,7 +223,7 @@ gimp_save_dialog_set_image (GimpSaveDialog *dialog,
|
|||||||
GIMP_FILE_SAVE_LAST_FILE_KEY);
|
GIMP_FILE_SAVE_LAST_FILE_KEY);
|
||||||
|
|
||||||
if (! dir_file)
|
if (! dir_file)
|
||||||
dir_file = gimp_save_dialog_get_default_folder (gimp);
|
dir_file = gimp_file_dialog_get_default_folder (file_dialog);
|
||||||
|
|
||||||
|
|
||||||
/* Priority of default basenames for Save:
|
/* Priority of default basenames for Save:
|
||||||
@ -326,46 +328,6 @@ gimp_save_dialog_set_image (GimpSaveDialog *dialog,
|
|||||||
|
|
||||||
/* private functions */
|
/* private functions */
|
||||||
|
|
||||||
static GFile *
|
|
||||||
gimp_save_dialog_get_default_folder (Gimp *gimp)
|
|
||||||
{
|
|
||||||
if (gimp->default_folder)
|
|
||||||
{
|
|
||||||
return gimp->default_folder;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
GFile *file = g_object_get_data (G_OBJECT (gimp),
|
|
||||||
"gimp-documents-folder");
|
|
||||||
|
|
||||||
if (! file)
|
|
||||||
{
|
|
||||||
gchar *path;
|
|
||||||
|
|
||||||
/* Make sure it ends in '/' */
|
|
||||||
path = g_build_path (G_DIR_SEPARATOR_S,
|
|
||||||
g_get_user_special_dir (G_USER_DIRECTORY_DOCUMENTS),
|
|
||||||
G_DIR_SEPARATOR_S,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
/* Paranoia fallback, see bug #722400 */
|
|
||||||
if (! path)
|
|
||||||
path = g_build_path (G_DIR_SEPARATOR_S,
|
|
||||||
g_get_home_dir (),
|
|
||||||
G_DIR_SEPARATOR_S,
|
|
||||||
NULL);
|
|
||||||
|
|
||||||
file = g_file_new_for_path (path);
|
|
||||||
g_free (path);
|
|
||||||
|
|
||||||
g_object_set_data_full (G_OBJECT (gimp), "gimp-documents-folder",
|
|
||||||
file, (GDestroyNotify) g_object_unref);
|
|
||||||
}
|
|
||||||
|
|
||||||
return file;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
static void
|
static void
|
||||||
gimp_save_dialog_add_compat_toggle (GimpSaveDialog *dialog)
|
gimp_save_dialog_add_compat_toggle (GimpSaveDialog *dialog)
|
||||||
{
|
{
|
||||||
|
Reference in New Issue
Block a user