[gimp] app: get_default_folder() is now a class method.
- From: Jehan Pagès <jehanp src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: get_default_folder() is now a class method.
- Date: Tue, 8 Sep 2015 21:13:15 +0000 (UTC)
commit 4441133a8bddc24a7e3fe46419d3592395f87ced
Author: Jehan <jehan girinstud io>
Date: Tue Sep 8 23:09:06 2015 +0200
app: get_default_folder() is now a class method.
app/widgets/gimpexportdialog.c | 59 ++-----------
app/widgets/gimpfiledialog.c | 177 ++++++++++++++++++++++++++--------------
app/widgets/gimpfiledialog.h | 40 +++++----
app/widgets/gimpsavedialog.c | 66 +++------------
4 files changed, 161 insertions(+), 181 deletions(-)
---
diff --git a/app/widgets/gimpexportdialog.c b/app/widgets/gimpexportdialog.c
index 897c205..76981a4 100644
--- a/app/widgets/gimpexportdialog.c
+++ b/app/widgets/gimpexportdialog.c
@@ -47,8 +47,6 @@
#include "gimp-intl.h"
-static GFile * gimp_export_dialog_get_default_folder (Gimp *gimp);
-
G_DEFINE_TYPE (GimpExportDialog, gimp_export_dialog,
GIMP_TYPE_FILE_DIALOG)
@@ -99,17 +97,20 @@ 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;
+ GimpFileDialog *file_dialog;
+ 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;
+ file_dialog = GIMP_FILE_DIALOG (dialog);
+
+ file_dialog->image = image;
- 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 Export:
@@ -143,7 +144,7 @@ gimp_export_dialog_set_image (GimpExportDialog *dialog,
GIMP_FILE_EXPORT_LAST_FILE_KEY);
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:
*
@@ -216,43 +217,3 @@ gimp_export_dialog_set_image (GimpExportDialog *dialog,
}
/* 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;
- }
-}
diff --git a/app/widgets/gimpfiledialog.c b/app/widgets/gimpfiledialog.c
index cf2c11a..ee0e227 100644
--- a/app/widgets/gimpfiledialog.c
+++ b/app/widgets/gimpfiledialog.c
@@ -71,73 +71,74 @@ enum
PROP_FILE_PROCS_ALL_IMAGES
};
-static void gimp_file_dialog_progress_iface_init (GimpProgressInterface *iface);
-
-static void gimp_file_dialog_set_property (GObject *object,
- guint property_id,
- const GValue *value,
- GParamSpec *pspec);
-static void gimp_file_dialog_get_property (GObject *object,
- guint property_id,
- GValue *value,
- GParamSpec *pspec);
-static void gimp_file_dialog_constructed (GObject *object);
-static void gimp_file_dialog_dispose (GObject *object);
-
-static gboolean gimp_file_dialog_delete_event (GtkWidget *widget,
- GdkEventAny *event);
-static void gimp_file_dialog_response (GtkDialog *dialog,
- gint response_id);
+static void gimp_file_dialog_progress_iface_init (GimpProgressInterface *iface);
+
+static void gimp_file_dialog_set_property (GObject *object,
+ guint property_id,
+ const GValue *value,
+ GParamSpec *pspec);
+static void gimp_file_dialog_get_property (GObject *object,
+ guint property_id,
+ GValue *value,
+ GParamSpec *pspec);
+static void gimp_file_dialog_constructed (GObject *object);
+static void gimp_file_dialog_dispose (GObject *object);
+
+static gboolean gimp_file_dialog_delete_event (GtkWidget *widget,
+ GdkEventAny *event);
+static void gimp_file_dialog_response (GtkDialog *dialog,
+ gint response_id);
static GimpProgress *
- gimp_file_dialog_progress_start (GimpProgress *progress,
- gboolean cancellable,
- const gchar *message);
-static void gimp_file_dialog_progress_end (GimpProgress *progress);
-static gboolean gimp_file_dialog_progress_is_active (GimpProgress *progress);
-static void gimp_file_dialog_progress_set_text (GimpProgress *progress,
- const gchar *message);
-static void gimp_file_dialog_progress_set_value (GimpProgress *progress,
- gdouble percentage);
-static gdouble gimp_file_dialog_progress_get_value (GimpProgress *progress);
-static void gimp_file_dialog_progress_pulse (GimpProgress *progress);
-static guint32 gimp_file_dialog_progress_get_window_id (GimpProgress *progress);
-
-static void gimp_file_dialog_add_user_dir (GimpFileDialog *dialog,
- GUserDirectory directory);
-static void gimp_file_dialog_add_preview (GimpFileDialog *dialog);
-static void gimp_file_dialog_add_filters (GimpFileDialog *dialog);
-static void gimp_file_dialog_process_procedure (GimpPlugInProcedure *file_proc,
- GtkFileFilter **filter_out,
- GtkFileFilter *all,
- GtkFileFilter *all_savable);
-static void gimp_file_dialog_add_proc_selection (GimpFileDialog *dialog);
-
-static void gimp_file_dialog_selection_changed (GtkFileChooser *chooser,
- GimpFileDialog *dialog);
-static void gimp_file_dialog_update_preview (GtkFileChooser *chooser,
- GimpFileDialog *dialog);
-
-static void gimp_file_dialog_proc_changed (GimpFileProcView *view,
- GimpFileDialog *dialog);
-
-static void gimp_file_dialog_help_func (const gchar *help_id,
- gpointer help_data);
-static void gimp_file_dialog_help_clicked (GtkWidget *widget,
- gpointer dialog);
-
-static gchar * gimp_file_dialog_pattern_from_extension (const gchar *extension);
+ gimp_file_dialog_progress_start (GimpProgress *progress,
+ gboolean cancellable,
+ const gchar *message);
+static void gimp_file_dialog_progress_end (GimpProgress *progress);
+static gboolean gimp_file_dialog_progress_is_active (GimpProgress *progress);
+static void gimp_file_dialog_progress_set_text (GimpProgress *progress,
+ const gchar *message);
+static void gimp_file_dialog_progress_set_value (GimpProgress *progress,
+ gdouble percentage);
+static gdouble gimp_file_dialog_progress_get_value (GimpProgress *progress);
+static void gimp_file_dialog_progress_pulse (GimpProgress *progress);
+static guint32 gimp_file_dialog_progress_get_window_id (GimpProgress *progress);
+
+static void gimp_file_dialog_add_user_dir (GimpFileDialog *dialog,
+ GUserDirectory directory);
+static void gimp_file_dialog_add_preview (GimpFileDialog *dialog);
+static void gimp_file_dialog_add_filters (GimpFileDialog *dialog);
+static void gimp_file_dialog_process_procedure (GimpPlugInProcedure *file_proc,
+ GtkFileFilter **filter_out,
+ GtkFileFilter *all,
+ GtkFileFilter *all_savable);
+static void gimp_file_dialog_add_proc_selection (GimpFileDialog *dialog);
+
+static void gimp_file_dialog_selection_changed (GtkFileChooser *chooser,
+ GimpFileDialog *dialog);
+static void gimp_file_dialog_update_preview (GtkFileChooser *chooser,
+ GimpFileDialog *dialog);
+
+static void gimp_file_dialog_proc_changed (GimpFileProcView *view,
+ GimpFileDialog *dialog);
+
+static void gimp_file_dialog_help_func (const gchar *help_id,
+ gpointer help_data);
+static void gimp_file_dialog_help_clicked (GtkWidget *widget,
+ gpointer dialog);
+
+static gchar * gimp_file_dialog_pattern_from_extension (const gchar *extension);
static GimpFileDialogState
- * gimp_file_dialog_get_state (GimpFileDialog *dialog);
-static void gimp_file_dialog_set_state (GimpFileDialog *dialog,
- GimpFileDialogState *state);
-static void gimp_file_dialog_state_destroy (GimpFileDialogState *state);
+ * gimp_file_dialog_get_state (GimpFileDialog *dialog);
+static void gimp_file_dialog_set_state (GimpFileDialog *dialog,
+ GimpFileDialogState *state);
+static void gimp_file_dialog_state_destroy (GimpFileDialogState *state);
-static void gimp_file_dialog_real_save_state (GimpFileDialog *dialog,
- const gchar *state_name);
-static void gimp_file_dialog_real_load_state (GimpFileDialog *dialog,
- const gchar *state_name);
+static GFile * gimp_file_dialog_real_get_default_folder (GimpFileDialog *dialog);
+static void gimp_file_dialog_real_save_state (GimpFileDialog *dialog,
+ const gchar *state_name);
+static void gimp_file_dialog_real_load_state (GimpFileDialog *dialog,
+ const gchar *state_name);
G_DEFINE_TYPE_WITH_CODE (GimpFileDialog, gimp_file_dialog,
GTK_TYPE_FILE_CHOOSER_DIALOG,
@@ -163,6 +164,7 @@ gimp_file_dialog_class_init (GimpFileDialogClass *klass)
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->load_state = gimp_file_dialog_real_load_state;
@@ -565,6 +567,14 @@ gimp_file_dialog_set_file_proc (GimpFileDialog *dialog,
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
gimp_file_dialog_save_state (GimpFileDialog *dialog,
const gchar *state_name)
@@ -1038,6 +1048,49 @@ gimp_file_dialog_state_destroy (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
gimp_file_dialog_real_save_state (GimpFileDialog *dialog,
const gchar *state_name)
diff --git a/app/widgets/gimpfiledialog.h b/app/widgets/gimpfiledialog.h
index e49d34d..fcee7e6 100644
--- a/app/widgets/gimpfiledialog.h
+++ b/app/widgets/gimpfiledialog.h
@@ -66,31 +66,35 @@ struct _GimpFileDialogClass
{
GtkFileChooserDialogClass parent_class;
- void (* save_state) (GimpFileDialog *dialog,
- const gchar *state_name);
- void (* load_state) (GimpFileDialog *dialog,
- const gchar *state_name);
+ GFile * ( *get_default_folder) (GimpFileDialog *dialog);
+
+ void (* save_state) (GimpFileDialog *dialog,
+ const gchar *state_name);
+ void (* load_state) (GimpFileDialog *dialog,
+ const gchar *state_name);
};
-GType gimp_file_dialog_get_type (void) G_GNUC_CONST;
+GType gimp_file_dialog_get_type (void) G_GNUC_CONST;
+
+void gimp_file_dialog_add_extra_widget (GimpFileDialog *dialog,
+ GtkWidget *widget,
+ gboolean expand,
+ gboolean fill,
+ guint padding);
-void gimp_file_dialog_add_extra_widget (GimpFileDialog *dialog,
- GtkWidget *widget,
- gboolean expand,
- gboolean fill,
- guint padding);
+void gimp_file_dialog_set_sensitive (GimpFileDialog *dialog,
+ gboolean sensitive);
-void gimp_file_dialog_set_sensitive (GimpFileDialog *dialog,
- gboolean sensitive);
+void gimp_file_dialog_set_file_proc (GimpFileDialog *dialog,
+ GimpPlugInProcedure *file_proc);
-void gimp_file_dialog_set_file_proc (GimpFileDialog *dialog,
- GimpPlugInProcedure *file_proc);
+GFile * gimp_file_dialog_get_default_folder (GimpFileDialog *dialog);
-void gimp_file_dialog_save_state (GimpFileDialog *dialog,
- const gchar *state_name);
-void gimp_file_dialog_load_state (GimpFileDialog *dialog,
- const gchar *state_name);
+void gimp_file_dialog_save_state (GimpFileDialog *dialog,
+ const gchar *state_name);
+void gimp_file_dialog_load_state (GimpFileDialog *dialog,
+ const gchar *state_name);
G_END_DECLS
diff --git a/app/widgets/gimpsavedialog.c b/app/widgets/gimpsavedialog.c
index a9252d3..87ffb12 100644
--- a/app/widgets/gimpsavedialog.c
+++ b/app/widgets/gimpsavedialog.c
@@ -62,7 +62,6 @@ static void gimp_save_dialog_save_state (GimpFileDialog *dialo
static void gimp_save_dialog_load_state (GimpFileDialog *dialog,
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_compat_toggled (GtkToggleButton *button,
GimpSaveDialog *dialog);
@@ -173,24 +172,27 @@ gimp_save_dialog_set_image (GimpSaveDialog *dialog,
gboolean close_after_saving,
GimpObject *display)
{
- GFile *dir_file = NULL;
- GFile *name_file = NULL;
- GFile *ext_file = NULL;
- gchar *basename;
- const gchar *version_string;
- gint rle_version;
- gint zlib_version;
- gchar *tooltip;
+ GimpFileDialog *file_dialog;
+ GFile *dir_file = NULL;
+ GFile *name_file = NULL;
+ GFile *ext_file = NULL;
+ gchar *basename;
+ const gchar *version_string;
+ gint rle_version;
+ gint zlib_version;
+ gchar *tooltip;
g_return_if_fail (GIMP_IS_SAVE_DIALOG (dialog));
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->close_after_saving = close_after_saving;
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:
@@ -221,7 +223,7 @@ gimp_save_dialog_set_image (GimpSaveDialog *dialog,
GIMP_FILE_SAVE_LAST_FILE_KEY);
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:
@@ -326,46 +328,6 @@ gimp_save_dialog_set_image (GimpSaveDialog *dialog,
/* 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
gimp_save_dialog_add_compat_toggle (GimpSaveDialog *dialog)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]