[gimp] app: add gimp_plug_in_manager_get_file_procedures() for the file dialogs
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] app: add gimp_plug_in_manager_get_file_procedures() for the file dialogs
- Date: Wed, 6 Jan 2016 14:11:15 +0000 (UTC)
commit dc53501ce9ddf0811044dbff38e7181235d744ea
Author: Michael Natterer <mitch gimp org>
Date: Wed Jan 6 15:07:41 2016 +0100
app: add gimp_plug_in_manager_get_file_procedures() for the file dialogs
Change GimpFileDialog's file-procs properties to enum
GimpFileProcedureGroup and get them via the newly added API. Set
properties common to all dialogs in the parent class.
app/plug-in/gimppluginmanager-file.c | 30 ++++++++++++++++++++++++-
app/plug-in/gimppluginmanager-file.h | 3 ++
app/plug-in/plug-in-enums.c | 2 +
app/plug-in/plug-in-enums.h | 1 +
app/widgets/gimpexportdialog.c | 39 ++++++++++++-------------------
app/widgets/gimpfiledialog.c | 35 +++++++++++++++++++---------
app/widgets/gimpopendialog.c | 41 ++++++++++++---------------------
app/widgets/gimpopendialog.h | 2 +
app/widgets/gimpsavedialog.c | 39 ++++++++++++-------------------
9 files changed, 106 insertions(+), 86 deletions(-)
---
diff --git a/app/plug-in/gimppluginmanager-file.c b/app/plug-in/gimppluginmanager-file.c
index 84fd4aa..7d4a281 100644
--- a/app/plug-in/gimppluginmanager-file.c
+++ b/app/plug-in/gimppluginmanager-file.c
@@ -236,6 +236,31 @@ gimp_plug_in_manager_register_thumb_loader (GimpPlugInManager *manager,
return TRUE;
}
+GSList *
+gimp_plug_in_manager_get_file_procedures (GimpPlugInManager *manager,
+ GimpFileProcedureGroup group)
+{
+ g_return_val_if_fail (GIMP_IS_PLUG_IN_MANAGER (manager), NULL);
+
+ switch (group)
+ {
+ case GIMP_FILE_PROCEDURE_GROUP_NONE:
+ return NULL;
+
+ case GIMP_FILE_PROCEDURE_GROUP_OPEN:
+ return manager->load_procs;
+
+ case GIMP_FILE_PROCEDURE_GROUP_SAVE:
+ return manager->save_procs;
+
+ case GIMP_FILE_PROCEDURE_GROUP_EXPORT:
+ return manager->export_procs;
+
+ default:
+ g_return_val_if_reached (NULL);
+ }
+}
+
GimpPlugInProcedure *
gimp_plug_in_manager_file_procedure_find (GimpPlugInManager *manager,
GimpFileProcedureGroup group,
@@ -337,7 +362,7 @@ gimp_plug_in_manager_file_procedure_find_by_mime_type (GimpPlugInManager *m
/* private functions */
-gboolean
+static gboolean
file_procedure_in_group (GimpPlugInProcedure *file_proc,
GimpFileProcedureGroup group)
{
@@ -353,6 +378,9 @@ file_procedure_in_group (GimpPlugInProcedure *file_proc,
switch (group)
{
+ case GIMP_FILE_PROCEDURE_GROUP_NONE:
+ return FALSE;
+
case GIMP_FILE_PROCEDURE_GROUP_SAVE:
/* Only .xcf shall pass */
return is_xcf_save || is_filter;
diff --git a/app/plug-in/gimppluginmanager-file.h b/app/plug-in/gimppluginmanager-file.h
index aa08980..d3101ea 100644
--- a/app/plug-in/gimppluginmanager-file.h
+++ b/app/plug-in/gimppluginmanager-file.h
@@ -42,6 +42,9 @@ gboolean gimp_plug_in_manager_register_thumb_loader (GimpPlugInManager *manage
const gchar *load_proc,
const gchar *thumb_proc);
+GSList * gimp_plug_in_manager_get_file_procedures (GimpPlugInManager *manager,
+ GimpFileProcedureGroup group);
+
GimpPlugInProcedure *
gimp_plug_in_manager_file_procedure_find (GimpPlugInManager *manager,
GimpFileProcedureGroup group,
diff --git a/app/plug-in/plug-in-enums.c b/app/plug-in/plug-in-enums.c
index 6c264e9..fbde936 100644
--- a/app/plug-in/plug-in-enums.c
+++ b/app/plug-in/plug-in-enums.c
@@ -83,6 +83,7 @@ gimp_file_procedure_group_get_type (void)
{
static const GEnumValue values[] =
{
+ { GIMP_FILE_PROCEDURE_GROUP_NONE, "GIMP_FILE_PROCEDURE_GROUP_NONE", "none" },
{ GIMP_FILE_PROCEDURE_GROUP_ANY, "GIMP_FILE_PROCEDURE_GROUP_ANY", "any" },
{ GIMP_FILE_PROCEDURE_GROUP_OPEN, "GIMP_FILE_PROCEDURE_GROUP_OPEN", "open" },
{ GIMP_FILE_PROCEDURE_GROUP_SAVE, "GIMP_FILE_PROCEDURE_GROUP_SAVE", "save" },
@@ -92,6 +93,7 @@ gimp_file_procedure_group_get_type (void)
static const GimpEnumDesc descs[] =
{
+ { GIMP_FILE_PROCEDURE_GROUP_NONE, "GIMP_FILE_PROCEDURE_GROUP_NONE", NULL },
{ GIMP_FILE_PROCEDURE_GROUP_ANY, "GIMP_FILE_PROCEDURE_GROUP_ANY", NULL },
{ GIMP_FILE_PROCEDURE_GROUP_OPEN, "GIMP_FILE_PROCEDURE_GROUP_OPEN", NULL },
{ GIMP_FILE_PROCEDURE_GROUP_SAVE, "GIMP_FILE_PROCEDURE_GROUP_SAVE", NULL },
diff --git a/app/plug-in/plug-in-enums.h b/app/plug-in/plug-in-enums.h
index 82626b1..e201eb2 100644
--- a/app/plug-in/plug-in-enums.h
+++ b/app/plug-in/plug-in-enums.h
@@ -53,6 +53,7 @@ GType gimp_file_procedure_group_get_type (void) G_GNUC_CONST;
typedef enum /*< pdb-skip >*/
{
+ GIMP_FILE_PROCEDURE_GROUP_NONE,
GIMP_FILE_PROCEDURE_GROUP_ANY,
GIMP_FILE_PROCEDURE_GROUP_OPEN,
GIMP_FILE_PROCEDURE_GROUP_SAVE,
diff --git a/app/widgets/gimpexportdialog.c b/app/widgets/gimpexportdialog.c
index ba8c68c..50eee75 100644
--- a/app/widgets/gimpexportdialog.c
+++ b/app/widgets/gimpexportdialog.c
@@ -34,10 +34,7 @@
#include "file/gimp-file.h"
-#include "plug-in/gimppluginmanager.h"
-
#include "gimpexportdialog.h"
-#include "gimpfiledialog.h"
#include "gimphelp-ids.h"
#include "gimp-intl.h"
@@ -65,29 +62,23 @@ gimp_export_dialog_init (GimpExportDialog *dialog)
GtkWidget *
gimp_export_dialog_new (Gimp *gimp)
{
- GimpExportDialog *dialog;
-
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
- dialog = g_object_new (GIMP_TYPE_EXPORT_DIALOG,
- "gimp", gimp,
- "title", _("Export Image"),
- "role", "gimp-file-export",
- "help-id", GIMP_HELP_FILE_EXPORT_AS,
- "stock-id", _("_Export"),
-
- "automatic-label", _("By Extension"),
- "automatic-help-id", GIMP_HELP_FILE_SAVE_BY_EXTENSION,
-
- "action", GTK_FILE_CHOOSER_ACTION_SAVE,
- "file-procs", gimp->plug_in_manager->export_procs,
- "file-procs-all-images", gimp->plug_in_manager->save_procs,
- "file-filter-label", _("All export images"),
- "local-only", FALSE,
- "do-overwrite-confirmation", TRUE,
- NULL);
-
- return GTK_WIDGET (dialog);
+ return g_object_new (GIMP_TYPE_EXPORT_DIALOG,
+ "gimp", gimp,
+ "title", _("Export Image"),
+ "role", "gimp-file-export",
+ "help-id", GIMP_HELP_FILE_EXPORT_AS,
+ "stock-id", _("_Export"),
+
+ "automatic-label", _("By Extension"),
+ "automatic-help-id", GIMP_HELP_FILE_SAVE_BY_EXTENSION,
+
+ "action", GTK_FILE_CHOOSER_ACTION_SAVE,
+ "file-procs", GIMP_FILE_PROCEDURE_GROUP_EXPORT,
+ "file-procs-all-images", GIMP_FILE_PROCEDURE_GROUP_SAVE,
+ "file-filter-label", _("All export images"),
+ NULL);
}
void
diff --git a/app/widgets/gimpfiledialog.c b/app/widgets/gimpfiledialog.c
index ba1977f..47bf4f6 100644
--- a/app/widgets/gimpfiledialog.c
+++ b/app/widgets/gimpfiledialog.c
@@ -39,6 +39,7 @@
#include "pdb/gimppdb.h"
+#include "plug-in/gimppluginmanager-file.h"
#include "plug-in/gimppluginprocedure.h"
#include "gimpfiledialog.h"
@@ -213,22 +214,26 @@ gimp_file_dialog_class_init (GimpFileDialogClass *klass)
G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_FILE_PROCS,
- g_param_spec_pointer ("file-procs",
- NULL, NULL,
- GIMP_PARAM_WRITABLE |
- G_PARAM_CONSTRUCT_ONLY));
+ g_param_spec_enum ("file-procs",
+ NULL, NULL,
+ GIMP_TYPE_FILE_PROCEDURE_GROUP,
+ GIMP_FILE_PROCEDURE_GROUP_NONE,
+ GIMP_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY));
g_object_class_install_property (object_class, PROP_FILE_PROCS_ALL_IMAGES,
- g_param_spec_pointer ("file-procs-all-images",
- NULL, NULL,
- GIMP_PARAM_WRITABLE |
- G_PARAM_CONSTRUCT_ONLY));
+ g_param_spec_enum ("file-procs-all-images",
+ NULL, NULL,
+ GIMP_TYPE_FILE_PROCEDURE_GROUP,
+ GIMP_FILE_PROCEDURE_GROUP_NONE,
+ GIMP_PARAM_WRITABLE |
+ G_PARAM_CONSTRUCT_ONLY));
}
static void
gimp_file_dialog_init (GimpFileDialog *dialog)
{
- dialog->stock_id = GTK_STOCK_OK;
+ dialog->stock_id = GTK_STOCK_OK;
}
static void
@@ -273,10 +278,14 @@ gimp_file_dialog_set_property (GObject *object,
dialog->file_filter_label = g_value_dup_string (value);
break;
case PROP_FILE_PROCS:
- dialog->file_procs = g_value_get_pointer (value);
+ dialog->file_procs =
+ gimp_plug_in_manager_get_file_procedures (dialog->gimp->plug_in_manager,
+ g_value_get_enum (value));
break;
case PROP_FILE_PROCS_ALL_IMAGES:
- dialog->file_procs_all_images = g_value_get_pointer (value);
+ dialog->file_procs_all_images =
+ gimp_plug_in_manager_get_file_procedures (dialog->gimp->plug_in_manager,
+ g_value_get_enum (value));
break;
default:
@@ -325,6 +334,10 @@ gimp_file_dialog_constructed (GObject *object)
GTK_RESPONSE_CANCEL,
-1);
+ gtk_file_chooser_set_local_only (GTK_FILE_CHOOSER (object), FALSE);
+ gtk_file_chooser_set_do_overwrite_confirmation (GTK_FILE_CHOOSER (object),
+ TRUE);
+
if (dialog->help_id)
{
gimp_help_connect (GTK_WIDGET (dialog),
diff --git a/app/widgets/gimpopendialog.c b/app/widgets/gimpopendialog.c
index 346b440..c436083 100644
--- a/app/widgets/gimpopendialog.c
+++ b/app/widgets/gimpopendialog.c
@@ -20,8 +20,6 @@
#include "config.h"
-#include <string.h>
-
#include <gegl.h>
#include <gtk/gtk.h>
@@ -33,9 +31,6 @@
#include "core/gimp.h"
#include "core/gimpimage.h"
-#include "plug-in/gimppluginmanager.h"
-
-#include "gimpfiledialog.h"
#include "gimphelp-ids.h"
#include "gimpopendialog.h"
@@ -64,29 +59,23 @@ gimp_open_dialog_init (GimpOpenDialog *dialog)
GtkWidget *
gimp_open_dialog_new (Gimp *gimp)
{
- GimpOpenDialog *dialog;
-
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
- dialog = g_object_new (GIMP_TYPE_OPEN_DIALOG,
- "gimp", gimp,
- "title", _("Open Image"),
- "role", "gimp-file-open",
- "help-id", GIMP_HELP_FILE_OPEN,
- "stock-id", GTK_STOCK_OPEN,
-
- "automatic-label", _("Automatically Detected"),
- "automatic-help-id", GIMP_HELP_FILE_OPEN_BY_EXTENSION,
-
- "action", GTK_FILE_CHOOSER_ACTION_OPEN,
- "file-procs", gimp->plug_in_manager->load_procs,
- "file-procs-all-images", NULL,
- "file-filter-label", NULL,
- "local-only", FALSE,
- "do-overwrite-confirmation", TRUE,
- NULL);
-
- return GTK_WIDGET (dialog);
+ return g_object_new (GIMP_TYPE_OPEN_DIALOG,
+ "gimp", gimp,
+ "title", _("Open Image"),
+ "role", "gimp-file-open",
+ "help-id", GIMP_HELP_FILE_OPEN,
+ "stock-id", GTK_STOCK_OPEN,
+
+ "automatic-label", _("Automatically Detected"),
+ "automatic-help-id", GIMP_HELP_FILE_OPEN_BY_EXTENSION,
+
+ "action", GTK_FILE_CHOOSER_ACTION_OPEN,
+ "file-procs", GIMP_FILE_PROCEDURE_GROUP_OPEN,
+ "file-procs-all-images", GIMP_FILE_PROCEDURE_GROUP_NONE,
+ "file-filter-label", NULL,
+ NULL);
}
void
diff --git a/app/widgets/gimpopendialog.h b/app/widgets/gimpopendialog.h
index 7b35d41..c8b0bf0 100644
--- a/app/widgets/gimpopendialog.h
+++ b/app/widgets/gimpopendialog.h
@@ -21,6 +21,8 @@
#ifndef __GIMP_OPEN_DIALOG_H__
#define __GIMP_OPEN_DIALOG_H__
+#include "gimpfiledialog.h"
+
G_BEGIN_DECLS
#define GIMP_TYPE_OPEN_DIALOG (gimp_open_dialog_get_type ())
diff --git a/app/widgets/gimpsavedialog.c b/app/widgets/gimpsavedialog.c
index 3083a56..4effe46 100644
--- a/app/widgets/gimpsavedialog.c
+++ b/app/widgets/gimpsavedialog.c
@@ -35,9 +35,6 @@
#include "file/gimp-file.h"
-#include "plug-in/gimppluginmanager.h"
-
-#include "gimpfiledialog.h"
#include "gimphelp-ids.h"
#include "gimpsavedialog.h"
@@ -134,29 +131,23 @@ gimp_save_dialog_load_state (GimpFileDialog *dialog,
GtkWidget *
gimp_save_dialog_new (Gimp *gimp)
{
- GimpSaveDialog *dialog;
-
g_return_val_if_fail (GIMP_IS_GIMP (gimp), NULL);
- dialog = g_object_new (GIMP_TYPE_SAVE_DIALOG,
- "gimp", gimp,
- "title", _("Save Image"),
- "role", "gimp-file-save",
- "help-id", GIMP_HELP_FILE_SAVE,
- "stock-id", GTK_STOCK_SAVE,
-
- "automatic-label", _("By Extension"),
- "automatic-help-id", GIMP_HELP_FILE_SAVE_BY_EXTENSION,
-
- "action", GTK_FILE_CHOOSER_ACTION_SAVE,
- "file-procs", gimp->plug_in_manager->save_procs,
- "file-procs-all-images", gimp->plug_in_manager->export_procs,
- "file-filter-label", _("All XCF images"),
- "local-only", FALSE,
- "do-overwrite-confirmation", TRUE,
- NULL);
-
- return GTK_WIDGET (dialog);
+ return g_object_new (GIMP_TYPE_SAVE_DIALOG,
+ "gimp", gimp,
+ "title", _("Save Image"),
+ "role", "gimp-file-save",
+ "help-id", GIMP_HELP_FILE_SAVE,
+ "stock-id", GTK_STOCK_SAVE,
+
+ "automatic-label", _("By Extension"),
+ "automatic-help-id", GIMP_HELP_FILE_SAVE_BY_EXTENSION,
+
+ "action", GTK_FILE_CHOOSER_ACTION_SAVE,
+ "file-procs", GIMP_FILE_PROCEDURE_GROUP_SAVE,
+ "file-procs-all-images", GIMP_FILE_PROCEDURE_GROUP_EXPORT,
+ "file-filter-label", _("All XCF images"),
+ NULL);
}
void
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]