Hi,

if you have plug-ins that used to work with GIMP-1.3, you will most
probably notice that they don't work with 1.3.23 any longer. If you
try to recompile them, you will notice that there are some
incompatible changes in libgimpwidgets. The changes were absolutely
needed and are quite small. Let me point you at the culprits
nevertheless...


(1)  GimpDialog API changes
     http://developer.gimp.org/api/1.3/libgimpwidgets/GimpDialog.html

GimpDialog is actually a GtkDialog. It has always been but the new API
is much closer to the GtkDialog API. Here's a simple code snippet
using the new API:

  dialog = gimp_dialog_new (_("Foo Filter"), "foo",
                            NULL, 0,
                            gimp_standard_help_func, "gimp-plug-in-foo",
    
                            GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                            GTK_STOCK_OK,     GTK_RESPONSE_OK,
 
                            NULL);

As you can see the new way of creating a GimpDialog is a lot
simpler. For each button you simply pass a label text (or a stock-id)
and an integer that will serve as an identifier for the button.  You
can then connect to the "response" signal which is emitted if a button
is pressed or the user attempts to close the dialog by other means.
The registered response ID is passed to the signal handler.

Alternatively, you can use gimp_dialog_run(), a convenience function
that behaves very much like gtk_dialog_run(). Most GIMP plug-ins
simply create a dialog, run a main loop which is quit when the dialog
is closed and then check if the OK button was pressed. This used to be
done by connecting a signal handler to the OK button and setting some
boolean variable from there. With the new dialog API, this boils down
to:

static gboolean
foo_dialog (void)
{
  GtkWidget *dialog;
  gboolean   run;

  dialog = gimp_dialog_new (_("Foo Filter"), "foo",
                            NULL, 0,
                            gimp_standard_help_func, "gimp-plug-in-foo",
 
                            GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
                            GTK_STOCK_OK,     GTK_RESPONSE_OK,

                            NULL);

  /*  add widgets to the dialog here  */

  run = (gimp_dialog_run (GIMP_DIALOG (dialog)) == GTK_RESPONSE_OK);

  gtk_widget_destroy (dialog);

  return run;
}



(2)  GimpFileSelection was renamed to GimpFileEntry.
     http://developer.gimp.org/api/1.3/libgimpwidgets/GimpFileEntry.html

This is a trivial change and not many plug-in are using a file entry
anyway. If your's does, just change all occurances of
gimp_file_selection to gimp_file_entry.


(3)  New option menu and radio group APIs
     http://developer.gimp.org/api/1.3/libgimpwidgets/libgimpwidgets-GimpWidgets.html

The old API for option menus and groups of radio buttons associated a
data pointer with each menu item or button. In almost all cases this
pointer was used to attach an integer (often an enum value). Unless
you used the GINT_TO_POINTER() and GPOINTER_TO_INT() macros, this
common usage case doesn't work for all platforms. That's why we
introduced new functions that take integer values directly. We ask you
to check your code and convert to the new functions if you are using
integers with gimp_option_menu_new() or gimp_radio_group_new().


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

Reply via email to