[gimp] plug-ins: port file-xpm to GimpProcedureConfig
- From: Michael Natterer <mitch src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gimp] plug-ins: port file-xpm to GimpProcedureConfig
- Date: Thu, 26 Sep 2019 10:10:11 +0000 (UTC)
commit e4acb969ba31f3677b1577c6a4002e87d0e150c2
Author: Michael Natterer <mitch gimp org>
Date: Thu Sep 26 12:09:41 2019 +0200
plug-ins: port file-xpm to GimpProcedureConfig
plug-ins/common/file-xpm.c | 94 +++++++++++++++++++---------------------------
1 file changed, 38 insertions(+), 56 deletions(-)
---
diff --git a/plug-ins/common/file-xpm.c b/plug-ins/common/file-xpm.c
index df9541f925..b446eb15a3 100644
--- a/plug-ins/common/file-xpm.c
+++ b/plug-ins/common/file-xpm.c
@@ -71,12 +71,6 @@ Previous...Inherited code from Ray Lehtiniemi, who inherited it from S & P.
#define SCALE_WIDTH 125
-/* Structs for the save dialog */
-typedef struct
-{
- gint threshold;
-} XpmSaveVals;
-
typedef struct
{
guchar r;
@@ -130,8 +124,10 @@ static void parse_image (GimpImage *image,
static gboolean save_image (GFile *file,
GimpImage *image,
GimpDrawable *drawable,
+ GObject *config,
GError **error);
-static gboolean save_dialog (void);
+static gboolean save_dialog (GimpProcedure *procedure,
+ GObject *config);
G_DEFINE_TYPE (Xpm, xpm, GIMP_TYPE_PLUG_IN)
@@ -153,11 +149,6 @@ static gboolean color;
*/
static gint cpp;
-static XpmSaveVals xpmvals =
-{
- 127 /* alpha threshold */
-};
-
static void
xpm_class_init (XpmClass *klass)
@@ -305,13 +296,17 @@ xpm_save (GimpProcedure *procedure,
const GimpValueArray *args,
gpointer run_data)
{
- GimpPDBStatusType status = GIMP_PDB_SUCCESS;
- GimpExportReturn export = GIMP_EXPORT_CANCEL;
- GError *error = NULL;
+ GimpProcedureConfig *config;
+ GimpPDBStatusType status = GIMP_PDB_SUCCESS;
+ GimpExportReturn export = GIMP_EXPORT_CANCEL;
+ GError *error = NULL;
INIT_I18N ();
gegl_init (NULL, NULL);
+ config = gimp_procedure_create_config (procedure);
+ gimp_procedure_config_begin_run (config, image, run_mode, args);
+
switch (run_mode)
{
case GIMP_RUN_INTERACTIVE:
@@ -334,41 +329,25 @@ xpm_save (GimpProcedure *procedure,
break;
}
- switch (run_mode)
+ if (run_mode == GIMP_RUN_INTERACTIVE)
{
- case GIMP_RUN_INTERACTIVE:
- gimp_get_data (SAVE_PROC, &xpmvals);
-
if (gimp_drawable_has_alpha (drawable))
- if (! save_dialog ())
+ if (! save_dialog (procedure, G_OBJECT (config)))
status = GIMP_PDB_CANCEL;
- break;
-
- case GIMP_RUN_NONINTERACTIVE:
- xpmvals.threshold = GIMP_VALUES_GET_INT (args, 0);
- break;
-
- case GIMP_RUN_WITH_LAST_VALS:
- gimp_get_data (SAVE_PROC, &xpmvals);
- break;
-
- default:
- break;
}
if (status == GIMP_PDB_SUCCESS)
{
- if (save_image (file, image, drawable,
- &error))
- {
- gimp_set_data (SAVE_PROC, &xpmvals, sizeof (XpmSaveVals));
- }
- else
+ if (! save_image (file, image, drawable, G_OBJECT (config),
+ &error))
{
status = GIMP_PDB_EXECUTION_ERROR;
}
}
+ gimp_procedure_config_end_run (config, status);
+ g_object_unref (config);
+
if (export == GIMP_EXPORT_EXPORT)
gimp_image_delete (image);
@@ -632,6 +611,7 @@ static gboolean
save_image (GFile *file,
GimpImage *image,
GimpDrawable *drawable,
+ GObject *config,
GError **error)
{
GeglBuffer *buffer;
@@ -650,9 +630,13 @@ save_image (GFile *file,
guchar *data;
GHashTable *hash = NULL;
gint i, j, k;
- gint threshold = xpmvals.threshold;
+ gint threshold;
gboolean success = FALSE;
+ g_object_get (config,
+ "threshold", &threshold,
+ NULL);
+
buffer = gimp_drawable_get_buffer (drawable);
width = gegl_buffer_get_width (buffer);
@@ -863,35 +847,33 @@ save_image (GFile *file,
}
static gboolean
-save_dialog (void)
+save_dialog (GimpProcedure *procedure,
+ GObject *config)
{
- GtkWidget *dialog;
- GtkWidget *grid;
- GtkAdjustment *scale_data;
- gboolean run;
+ GtkWidget *dialog;
+ GtkWidget *grid;
+ gboolean run;
- dialog = gimp_export_dialog_new (_("XPM"), PLUG_IN_BINARY, SAVE_PROC);
+ dialog = gimp_procedure_dialog_new (procedure,
+ GIMP_PROCEDURE_CONFIG (config),
+ _("Export Image as XPM"));
grid = gtk_grid_new ();
gtk_grid_set_column_spacing (GTK_GRID (grid), 6);
gtk_container_set_border_width (GTK_CONTAINER (grid), 12);
- gtk_box_pack_start (GTK_BOX (gimp_export_dialog_get_content_area (dialog)),
+ gtk_box_pack_start (GTK_BOX (gtk_dialog_get_content_area (GTK_DIALOG (dialog))),
grid, TRUE, TRUE, 0);
gtk_widget_show (grid);
- scale_data = gimp_scale_entry_new (GTK_GRID (grid), 0, 0,
- _("_Alpha threshold:"), SCALE_WIDTH, 0,
- xpmvals.threshold, 0, 255, 1, 8, 0,
- TRUE, 0, 0,
- NULL, NULL);
-
- g_signal_connect (scale_data, "value-changed",
- G_CALLBACK (gimp_int_adjustment_update),
- &xpmvals.threshold);
+ gimp_prop_scale_entry_new (config, "threshold",
+ GTK_GRID (grid), 0, 0,
+ _("_Alpha threshold:"),
+ 1, 8, 0,
+ FALSE, 0, 0);
gtk_widget_show (dialog);
- run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK);
+ run = gimp_procedure_dialog_run (GIMP_PROCEDURE_DIALOG (dialog));
gtk_widget_destroy (dialog);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]