The intent of this patch is to make gimpressionist PDB-friendly. To do so
it:
1. Implements the non-interactive running logic.
2. Adds another PDB function, this time accepting a (Gimpressionist)
preset to use as an argument.
Consider it as a special gift for me just in time for GimpCon.
Regards,
Shlomi Fish
--
Shlomi Fish[EMAIL PROTECTED]
Home Page: http://shlomif.il.eu.org/
You are banished! You are banished! You are banished!
Hey? I'm just kidding!--- vanilla/gimp/plug-ins/gimpressionist/presets.c 2004-05-28 19:36:52.538631904
+0300
+++ gimp/plug-ins/gimpressionist/presets.c 2004-06-23 15:32:39.509130992 +0300
@@ -278,6 +278,37 @@
return 0;
}
+int select_preset(char * preset)
+{
+int ret = SELECT_PRESET_OK;
+/* I'm copying this behavior as is. As it seems applying the
+ * factury_defaults preset does nothing, which I'm not sure
+ * if that was what the author intended.
+ * -- Shlomi Fish
+ */
+if (strcmp (preset, factory_defaults))
+ {
+gchar *rel = g_build_filename (Presets, preset, NULL);
+gchar *abs = findfile (rel);
+
+g_free (rel);
+
+if (abs)
+ {
+if (loadpreset (abs))
+ {
+ret = SELECT_PRESET_LOAD_FAILED;
+ }
+g_free (abs);
+ }
+else
+ {
+ret = SELECT_PRESET_FILE_NOT_FOUND;
+ }
+ }
+return ret;
+}
+
static void applypreset(GtkWidget *w, GtkTreeSelection *selection)
{
GtkTreeIter iter;
@@ -289,19 +320,7 @@
gtk_tree_model_get (model, iter, 0, preset, -1);
- if (strcmp (preset, factory_defaults))
- {
- gchar *rel = g_build_filename (Presets, preset, NULL);
- gchar *abs = findfile (rel);
-
- g_free (rel);
-
- if (abs)
-{
- loadpreset (abs);
- g_free (abs);
-}
- }
+ select_preset(preset);
restorevals ();
--- vanilla/gimp/plug-ins/gimpressionist/gimpressionist.h 2004-05-28
19:36:52.474641632 +0300
+++ gimp/plug-ins/gimpressionist/gimpressionist.h 2004-06-23 15:31:52.672251280
+0300
@@ -182,3 +182,12 @@
void create_sizemap_dialog(void);
double getsiz(double x, double y, int from);
+
+enum SELECT_PRESET_RETURN_VALUES
+{
+SELECT_PRESET_OK = 0,
+SELECT_PRESET_FILE_NOT_FOUND = -1,
+SELECT_PRESET_LOAD_FAILED = -2,
+};
+
+int select_preset(char * preset);
--- vanilla/gimp/plug-ins/gimpressionist/gimp.c 2004-05-28 19:36:52.467642696 +0300
+++ gimp/plug-ins/gimpressionist/gimp.c 2004-06-23 17:36:24.064427024 +0300
@@ -89,6 +89,8 @@
MAIN()
+#define USE_PRESET_PROC_NAME plug_in_gimpressionist_use_preset
+
static void
query(void)
{
@@ -99,6 +101,15 @@
{ GIMP_PDB_DRAWABLE, drawable, Input drawable },
};
+ static GimpParamDef use_preset_args[] =
+ {
+{ GIMP_PDB_INT32,run_mode, Interactive},
+{ GIMP_PDB_IMAGE,image, Input image},
+{ GIMP_PDB_DRAWABLE, drawable, Input drawable },
+{ GIMP_PDB_STRING, preset,Preset Name},
+ };
+
+
gimp_install_procedure (PLUG_IN_NAME,
Performs various artistic operations on an image,
Performs various artistic operations on an image,
@@ -110,6 +121,19 @@
GIMP_PLUGIN,
G_N_ELEMENTS (args), 0,
args, NULL);
+
+ gimp_install_procedure (USE_PRESET_PROC_NAME,
+ Performs various artistic operations on an image using a
preset,
+ Performs various artistic operations on an image using a
preset,
+ Shlomi Fish [EMAIL PROTECTED],
+ Shlomi Fish,
+ v0.2, June 2004,
+ N_(_GIMPressionist by Preset...),
+ RGB*, GRAY*,
+ GIMP_PLUGIN,
+ G_N_ELEMENTS (use_preset_args), 0,
+ use_preset_args, NULL);
+
gimp_plugin_menu_register (PLUG_IN_NAME,
N_(Image/Filters/Artistic));
@@ -132,9 +156,18 @@
static GimpParam values[1];
GimpRunModerun_mode;
GimpPDBStatusType status;
+ gboolean with_specified_preset;
status = GIMP_PDB_SUCCESS;
run_mode = param[0].data.d_int32;
+ if (!strcmp(name, USE_PRESET_PROC_NAME))
+{
+ with_specified_preset = TRUE;
+}
+ else
+{
+ with_specified_preset = FALSE;
+}
values[0].type = GIMP_PDB_STATUS;
values[0].data.d_status = status;
@@ -153,15 +186,27 @@
switch (run_mode)
{
+/*
+ * Note: there's a limitation here. Running this plug-in before the
+ * interactive plug-in was run will cause it