[Gimp-developer] [PATCH] Make Gimpressionist PDB-friendly

2004-06-23 Thread Shlomi Fish

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 

Re: [Gimp-developer] [PATCH] Make Gimpressionist PDB-friendly

2004-06-23 Thread Sven Neumann
Hi,

Shlomi Fish [EMAIL PROTECTED] writes:

 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.

Very nice. Would you mind to open a bug report for this and attach the
patch there? That ensures that it isn't forgotten.  I will be offline
for the next days and I don't expect to find time to apply patches
until GIMPCon is over.


Sven
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer


Re: [Gimp-developer] [PATCH] Make Gimpressionist PDB-friendly

2004-06-23 Thread Shlomi Fish
On Wednesday 23 June 2004 19:47, Sven Neumann wrote:
 Hi,

 Shlomi Fish [EMAIL PROTECTED] writes:
  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.

 Very nice. Would you mind to open a bug report for this and attach the
 patch there? That ensures that it isn't forgotten.  

Sure thing.

 I will be offline 
 for the next days and I don't expect to find time to apply patches
 until GIMPCon is over.


OK.

Sven and everyone - enjoy the conference!

Regards,

Shlomi Fish


 Sven
 ___
 Gimp-developer mailing list
 [EMAIL PROTECTED]
 http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer

-- 

-
Shlomi Fish  [EMAIL PROTECTED]
Homepage:http://shlomif.il.eu.org/

Knuth is not God! It took him two days to build the Roman Empire.
___
Gimp-developer mailing list
[EMAIL PROTECTED]
http://lists.xcf.berkeley.edu/mailman/listinfo/gimp-developer