GitLab repository storage has been migrated to hashed layout. Please contact Infrastructure team if you notice any issues with repositories or hooks.

Commit b10adabb authored by Michael Natterer's avatar Michael Natterer 😴 Committed by Michael Natterer

Added parent window API to the GimpProgress interface and to the libgimp

2005-09-09  Michael Natterer  <mitch@gimp.org>

	Added parent window API to the GimpProgress interface and to
	the libgimp progress stuff. Might look strange, but does
	the right thing in almost all cases (image window, file dialog,
	script-fu dialog etc). Fixes bug #62988.

	* app/core/gimpprogress.[ch]: added GimpProgress::get_window()
	which should return a toplevel window ID if the progress is in a
	window that wants to be the transient parent of plug-in dialogs.

	* app/widgets/gimpwidgets-utils.[ch] (gimp_window_get_native): new
	function which returns the window handle of a GtkWindow's GdkWindow.

	* app/widgets/gimpfiledialog.c: implement ::get_window().

	* app/display/gimpdisplay.[ch]: ditto. Removed window handle API.

	* app/gui/gui-vtable.c: changed accordingly.

	* libgimpbase/gimpbaseenums.[ch] (enum GimpProgressCommand):
	added GIMP_PROGRESS_COMMAND_GET_WINDOW.

	* app/plug-in/plug-in-progress.[ch] (plug_in_progress_get_window):
	new function. Also renamed some functions to match the
	GimpProgress interface, and not the legacy PDB procedure names.

	* tools/pdbgen/pdb/progress.pdb
	* app/core/gimppdbprogress.c: implement get_window() on both
	sides of the wire, keeping backward compatibility (hopefully).

	* libgimp/gimpprogress.[ch]: deprecated gimp_progress_install()
	and added gimp_progress_install_vtable() which takes a vtable with
	padding to be extensible. Added get_window() vtable entry and
	dispatch it accordingly. Also added pulse() which was implemented
	in a hackish way before. Everything is of course backward
	compatible.

	* libgimp/gimpprogressbar.c: inmplement the get_window() stuff
	so a plug-in dialog containing a progress can be the transient
	parent of another dialog in another plug-in.

	* libgimp/gimpui.[ch] (gimp_ui_get_progress_window): new function
	which returns a foreign GdkWindow of this plug-ins progress
	window.

	Renamed gimp_window_set_transient_for_default_display() to
	gimp_window_set_transient() and make it use the progress' window
	handle instead of the display's (which is the right thing to do in
	almost all cases).

	* libgimp/gimp.def
	* libgimp/gimpui.def: add the new functions.

	* tools/pdbgen/enums.pl
	* app/pdb/internal_procs.c
	* app/pdb/progress_cmds.c
	* libgimp/gimpprogress_pdb.[ch]: regenerated.

	* libgimp/gimpexport.c
	* plug-ins/*/*.c: follow API change.
parent 5a81d39e
2005-09-09 Michael Natterer <mitch@gimp.org>
Added parent window API to the GimpProgress interface and to
the libgimp progress stuff. Might look strange, but does
the right thing in almost all cases (image window, file dialog,
script-fu dialog etc). Fixes bug #62988.
* app/core/gimpprogress.[ch]: added GimpProgress::get_window()
which should return a toplevel window ID if the progress is in a
window that wants to be the transient parent of plug-in dialogs.
* app/widgets/gimpwidgets-utils.[ch] (gimp_window_get_native): new
function which returns the window handle of a GtkWindow's GdkWindow.
* app/widgets/gimpfiledialog.c: implement ::get_window().
* app/display/gimpdisplay.[ch]: ditto. Removed window handle API.
* app/gui/gui-vtable.c: changed accordingly.
* libgimpbase/gimpbaseenums.[ch] (enum GimpProgressCommand):
added GIMP_PROGRESS_COMMAND_GET_WINDOW.
* app/plug-in/plug-in-progress.[ch] (plug_in_progress_get_window):
new function. Also renamed some functions to match the
GimpProgress interface, and not the legacy PDB procedure names.
* tools/pdbgen/pdb/progress.pdb
* app/core/gimppdbprogress.c: implement get_window() on both
sides of the wire, keeping backward compatibility (hopefully).
* libgimp/gimpprogress.[ch]: deprecated gimp_progress_install()
and added gimp_progress_install_vtable() which takes a vtable with
padding to be extensible. Added get_window() vtable entry and
dispatch it accordingly. Also added pulse() which was implemented
in a hackish way before. Everything is of course backward
compatible.
* libgimp/gimpprogressbar.c: inmplement the get_window() stuff
so a plug-in dialog containing a progress can be the transient
parent of another dialog in another plug-in.
* libgimp/gimpui.[ch] (gimp_ui_get_progress_window): new function
which returns a foreign GdkWindow of this plug-ins progress
window.
Renamed gimp_window_set_transient_for_default_display() to
gimp_window_set_transient() and make it use the progress' window
handle instead of the display's (which is the right thing to do in
almost all cases).
* libgimp/gimp.def
* libgimp/gimpui.def: add the new functions.
* tools/pdbgen/enums.pl
* app/pdb/internal_procs.c
* app/pdb/progress_cmds.c
* libgimp/gimpprogress_pdb.[ch]: regenerated.
* libgimp/gimpexport.c
* plug-ins/*/*.c: follow API change.
2005-09-09 Tor Lillqvist <tml@novell.com>
* gimptool-win32.c.in (get_prefix, maybe_append_exe)
......
......@@ -60,18 +60,18 @@ static void gimp_pdb_progress_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec);
static GimpProgress *
gimp_pdb_progress_progress_start (GimpProgress *progress,
const gchar *message,
gboolean cancelable);
static void gimp_pdb_progress_progress_end (GimpProgress *progress);
static gboolean gimp_pdb_progress_progress_is_active (GimpProgress *progress);
static void gimp_pdb_progress_progress_set_text (GimpProgress *progress,
const gchar *message);
static void gimp_pdb_progress_progress_set_value (GimpProgress *progress,
gdouble percentage);
static gdouble gimp_pdb_progress_progress_get_value (GimpProgress *progress);
static void gimp_pdb_progress_progress_pulse (GimpProgress *progress);
static GimpProgress * gimp_pdb_progress_progress_start(GimpProgress *progress,
const gchar *message,
gboolean cancelable);
static void gimp_pdb_progress_progress_end (GimpProgress *progress);
static gboolean gimp_pdb_progress_progress_is_active (GimpProgress *progress);
static void gimp_pdb_progress_progress_set_text (GimpProgress *progress,
const gchar *message);
static void gimp_pdb_progress_progress_set_value (GimpProgress *progress,
gdouble percentage);
static gdouble gimp_pdb_progress_progress_get_value (GimpProgress *progress);
static void gimp_pdb_progress_progress_pulse (GimpProgress *progress);
static guint32 gimp_pdb_progress_progress_get_window (GimpProgress *progress);
static GObjectClass *parent_class = NULL;
......@@ -151,13 +151,14 @@ gimp_pdb_progress_init (GimpPdbProgress *progress,
static void
gimp_pdb_progress_progress_iface_init (GimpProgressInterface *progress_iface)
{
progress_iface->start = gimp_pdb_progress_progress_start;
progress_iface->end = gimp_pdb_progress_progress_end;
progress_iface->is_active = gimp_pdb_progress_progress_is_active;
progress_iface->set_text = gimp_pdb_progress_progress_set_text;
progress_iface->set_value = gimp_pdb_progress_progress_set_value;
progress_iface->get_value = gimp_pdb_progress_progress_get_value;
progress_iface->pulse = gimp_pdb_progress_progress_pulse;
progress_iface->start = gimp_pdb_progress_progress_start;
progress_iface->end = gimp_pdb_progress_progress_end;
progress_iface->is_active = gimp_pdb_progress_progress_is_active;
progress_iface->set_text = gimp_pdb_progress_progress_set_text;
progress_iface->set_value = gimp_pdb_progress_progress_set_value;
progress_iface->get_value = gimp_pdb_progress_progress_get_value;
progress_iface->pulse = gimp_pdb_progress_progress_pulse;
progress_iface->get_window = gimp_pdb_progress_progress_get_window;
}
static GObject *
......@@ -233,12 +234,14 @@ gimp_pdb_progress_set_property (GObject *object,
}
}
static void
static gdouble
gimp_pdb_progress_run_callback (GimpPdbProgress *progress,
GimpProgressCommand command,
const gchar *text,
gdouble value)
{
gdouble retval = 0;
if (progress->callback_name && ! progress->callback_busy)
{
Argument *return_vals;
......@@ -262,12 +265,18 @@ gimp_pdb_progress_run_callback (GimpPdbProgress *progress,
"The corresponding plug-in may have crashed."),
g_type_name (G_TYPE_FROM_INSTANCE (progress)));
}
else if (n_return_vals >= 2 && return_vals[1].arg_type == GIMP_PDB_FLOAT)
{
retval = return_vals[1].value.pdb_float;
}
if (return_vals)
procedural_db_destroy_args (return_vals, n_return_vals);
progress->callback_busy = FALSE;
}
return retval;
}
static GimpProgress *
......@@ -363,6 +372,17 @@ gimp_pdb_progress_progress_pulse (GimpProgress *progress)
NULL, 0.0);
}
static guint32
gimp_pdb_progress_progress_get_window (GimpProgress *progress)
{
GimpPdbProgress *pdb_progress = GIMP_PDB_PROGRESS (progress);
return (guint32)
gimp_pdb_progress_run_callback (pdb_progress,
GIMP_PROGRESS_COMMAND_GET_WINDOW,
NULL, 0.0);
}
GimpPdbProgress *
gimp_pdb_progress_get_by_callback (GimpPdbProgressClass *klass,
const gchar *callback_name)
......
......@@ -203,6 +203,21 @@ gimp_progress_pulse (GimpProgress *progress)
progress_iface->pulse (progress);
}
guint32
gimp_progress_get_window (GimpProgress *progress)
{
GimpProgressInterface *progress_iface;
g_return_val_if_fail (GIMP_IS_PROGRESS (progress), 0);
progress_iface = GIMP_PROGRESS_GET_INTERFACE (progress);
if (progress_iface->get_window)
return progress_iface->get_window (progress);
return 0;
}
void
gimp_progress_message (GimpProgress *progress,
Gimp *gimp,
......
......@@ -36,26 +36,28 @@ struct _GimpProgressInterface
GTypeInterface base_iface;
/* virtual functions */
GimpProgress * (* start) (GimpProgress *progress,
const gchar *message,
gboolean cancelable);
void (* end) (GimpProgress *progress);
gboolean (* is_active) (GimpProgress *progress);
void (* set_text) (GimpProgress *progress,
const gchar *message);
void (* set_value) (GimpProgress *progress,
gdouble percentage);
gdouble (* get_value) (GimpProgress *progress);
void (* pulse) (GimpProgress *progress);
void (* message) (GimpProgress *progress,
Gimp *gimp,
const gchar *domain,
const gchar *message);
GimpProgress * (* start) (GimpProgress *progress,
const gchar *message,
gboolean cancelable);
void (* end) (GimpProgress *progress);
gboolean (* is_active) (GimpProgress *progress);
void (* set_text) (GimpProgress *progress,
const gchar *message);
void (* set_value) (GimpProgress *progress,
gdouble percentage);
gdouble (* get_value) (GimpProgress *progress);
void (* pulse) (GimpProgress *progress);
guint32 (* get_window) (GimpProgress *progress);
void (* message) (GimpProgress *progress,
Gimp *gimp,
const gchar *domain,
const gchar *message);
/* signals */
void (* cancel) (GimpProgress *progress);
void (* cancel) (GimpProgress *progress);
};
......@@ -74,6 +76,8 @@ void gimp_progress_set_value (GimpProgress *progress,
gdouble gimp_progress_get_value (GimpProgress *progress);
void gimp_progress_pulse (GimpProgress *progress);
guint32 gimp_progress_get_window (GimpProgress *progress);
void gimp_progress_message (GimpProgress *progress,
Gimp *gimp,
const gchar *domain,
......
......@@ -20,14 +20,6 @@
#include <gtk/gtk.h>
#ifdef GDK_WINDOWING_WIN32
#include <gdk/gdkwin32.h>
#endif
#ifdef GDK_WINDOWING_X11
#include <gdk/gdkx.h>
#endif
#include "display-types.h"
#include "tools/tools-types.h"
......@@ -37,6 +29,8 @@
#include "core/gimplist.h"
#include "core/gimpprogress.h"
#include "widgets/gimpwidgets-utils.h"
#include "tools/gimptool.h"
#include "tools/tool_manager.h"
......@@ -64,37 +58,38 @@ static void gimp_display_class_init (GimpDisplayClass *klass);
static void gimp_display_init (GimpDisplay *gdisp);
static void gimp_display_progress_iface_init (GimpProgressInterface *progress_iface);
static void gimp_display_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec);
static void gimp_display_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec);
static void gimp_display_set_property (GObject *object,
guint property_id,
const GValue *value,
GParamSpec *pspec);
static void gimp_display_get_property (GObject *object,
guint property_id,
GValue *value,
GParamSpec *pspec);
static GimpProgress *
gimp_display_progress_start (GimpProgress *progress,
const gchar *message,
gboolean cancelable);
static void gimp_display_progress_end (GimpProgress *progress);
static gboolean gimp_display_progress_is_active (GimpProgress *progress);
static void gimp_display_progress_set_text (GimpProgress *progress,
const gchar *message);
static void gimp_display_progress_set_value (GimpProgress *progress,
gdouble percentage);
static gdouble gimp_display_progress_get_value (GimpProgress *progress);
static void gimp_display_progress_pulse (GimpProgress *progress);
static void gimp_display_progress_canceled (GimpProgress *progress,
GimpDisplay *display);
static void gimp_display_flush_whenever (GimpDisplay *gdisp,
gboolean now);
static void gimp_display_paint_area (GimpDisplay *gdisp,
gint x,
gint y,
gint w,
gint h);
gimp_display_progress_start (GimpProgress *progress,
const gchar *message,
gboolean cancelable);
static void gimp_display_progress_end (GimpProgress *progress);
static gboolean gimp_display_progress_is_active (GimpProgress *progress);
static void gimp_display_progress_set_text (GimpProgress *progress,
const gchar *message);
static void gimp_display_progress_set_value (GimpProgress *progress,
gdouble percentage);
static gdouble gimp_display_progress_get_value (GimpProgress *progress);
static void gimp_display_progress_pulse (GimpProgress *progress);
static guint32 gimp_display_progress_get_window (GimpProgress *progress);
static void gimp_display_progress_canceled (GimpProgress *progress,
GimpDisplay *display);
static void gimp_display_flush_whenever (GimpDisplay *gdisp,
gboolean now);
static void gimp_display_paint_area (GimpDisplay *gdisp,
gint x,
gint y,
gint w,
gint h);
static GimpObjectClass *parent_class = NULL;
......@@ -184,13 +179,14 @@ gimp_display_init (GimpDisplay *gdisp)
static void
gimp_display_progress_iface_init (GimpProgressInterface *progress_iface)
{
progress_iface->start = gimp_display_progress_start;
progress_iface->end = gimp_display_progress_end;
progress_iface->is_active = gimp_display_progress_is_active;
progress_iface->set_text = gimp_display_progress_set_text;
progress_iface->set_value = gimp_display_progress_set_value;
progress_iface->get_value = gimp_display_progress_get_value;
progress_iface->pulse = gimp_display_progress_pulse;
progress_iface->start = gimp_display_progress_start;
progress_iface->end = gimp_display_progress_end;
progress_iface->is_active = gimp_display_progress_is_active;
progress_iface->set_text = gimp_display_progress_set_text;
progress_iface->set_value = gimp_display_progress_set_value;
progress_iface->get_value = gimp_display_progress_get_value;
progress_iface->pulse = gimp_display_progress_pulse;
progress_iface->get_window = gimp_display_progress_get_window;
}
static void
......@@ -344,6 +340,17 @@ gimp_display_progress_pulse (GimpProgress *progress)
gimp_progress_pulse (GIMP_PROGRESS (shell->statusbar));
}
static guint32
gimp_display_progress_get_window (GimpProgress *progress)
{
GimpDisplay *display = GIMP_DISPLAY (progress);
if (! display->shell)
return 0;
return (guint32) gimp_window_get_native (GTK_WINDOW (display->shell));
}
static void
gimp_display_progress_canceled (GimpProgress *progress,
GimpDisplay *display)
......@@ -446,46 +453,6 @@ gimp_display_get_ID (GimpDisplay *gdisp)
return gdisp->ID;
}
/**
* gimp_display_get_window:
* @display: a #GimpDisplayShell
*
* This function is used to pass a window handle to plug-ins so that
* they can set their dialog windows transient to the image display.
*
* Return value: a native window handle of the display's shell or 0
* if the shell isn't realized yet
*/
GdkNativeWindow
gimp_display_get_window (GimpDisplay *display)
{
GtkWidget *shell;
#ifdef GDK_NATIVE_WINDOW_POINTER
g_return_val_if_fail (GIMP_IS_DISPLAY (display), NULL);
#else
g_return_val_if_fail (GIMP_IS_DISPLAY (display), 0);
#endif
shell = display->shell;
#ifdef GDK_WINDOWING_WIN32
if (shell && GTK_WIDGET_REALIZED (shell))
return GDK_WINDOW_HWND (shell->window);
#endif
#ifdef GDK_WINDOWING_X11
if (shell && GTK_WIDGET_REALIZED (shell))
return GDK_WINDOW_XID (shell->window);
#endif
#ifdef GDK_NATIVE_WINDOW_POINTER
return NULL;
#else
return 0;
#endif
}
GimpDisplay *
gimp_display_get_by_ID (Gimp *gimp,
gint ID)
......
......@@ -54,32 +54,31 @@ struct _GimpDisplayClass
};
GType gimp_display_get_type (void) G_GNUC_CONST;
GimpDisplay * gimp_display_new (GimpImage *gimage,
GimpUnit unit,
gdouble scale,
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager);
void gimp_display_delete (GimpDisplay *gdisp);
gint gimp_display_get_ID (GimpDisplay *gdisp);
GdkNativeWindow gimp_display_get_window (GimpDisplay *gdisp);
GimpDisplay * gimp_display_get_by_ID (Gimp *gimp,
gint ID);
void gimp_display_reconnect (GimpDisplay *gdisp,
GimpImage *gimage);
void gimp_display_update_area (GimpDisplay *gdisp,
gboolean now,
gint x,
gint y,
gint w,
gint h);
void gimp_display_flush (GimpDisplay *gdisp);
void gimp_display_flush_now (GimpDisplay *gdisp);
GType gimp_display_get_type (void) G_GNUC_CONST;
GimpDisplay * gimp_display_new (GimpImage *gimage,
GimpUnit unit,
gdouble scale,
GimpMenuFactory *menu_factory,
GimpUIManager *popup_manager);
void gimp_display_delete (GimpDisplay *gdisp);
gint gimp_display_get_ID (GimpDisplay *gdisp);
GimpDisplay * gimp_display_get_by_ID (Gimp *gimp,
gint ID);
void gimp_display_reconnect (GimpDisplay *gdisp,
GimpImage *gimage);
void gimp_display_update_area (GimpDisplay *gdisp,
gboolean now,
gint x,
gint y,
gint w,
gint h);
void gimp_display_flush (GimpDisplay *gdisp);
void gimp_display_flush_now (GimpDisplay *gdisp);
#endif /* __GIMP_DISPLAY_H__ */
......@@ -58,6 +58,7 @@
#include "widgets/gimppatternselect.h"
#include "widgets/gimpprogressdialog.h"
#include "widgets/gimpuimanager.h"
#include "widgets/gimpwidgets-utils.h"
#include "display/gimpdisplay.h"
#include "display/gimpdisplay-foreach.h"
......@@ -333,14 +334,12 @@ gui_display_get_ID (GimpObject *display)
static guint32
gui_display_get_window (GimpObject *display)
{
#ifdef GDK_NATIVE_WINDOW_POINTER
#ifdef __GNUC__
#warning gui_display_get_window() unimplementable for the target windowing system
#endif
GimpDisplay *disp = GIMP_DISPLAY (display);
if (disp->shell)
return (guint32) gimp_window_get_native (GTK_WINDOW (disp->shell));
return 0;
#else
return (guint32) gimp_display_get_window (GIMP_DISPLAY (display));
#endif
}
static GimpObject *
......
......@@ -75,7 +75,7 @@ void register_undo_procs (Gimp *gimp);
void register_unit_procs (Gimp *gimp);
void register_vectors_procs (Gimp *gimp);
/* 474 procedures registered total */
/* 475 procedures registered total */
void
internal_procs_init (Gimp *gimp,
......@@ -102,13 +102,13 @@ internal_procs_init (Gimp *gimp,
(* status_callback) (NULL, _("Context"), 0.12);
register_context_procs (gimp);
(* status_callback) (NULL, _("Convert"), 0.167);
(* status_callback) (NULL, _("Convert"), 0.166);
register_convert_procs (gimp);
(* status_callback) (NULL, _("Display procedures"), 0.173);
register_display_procs (gimp);
(* status_callback) (NULL, _("Drawable procedures"), 0.184);
(* status_callback) (NULL, _("Drawable procedures"), 0.183);
register_drawable_procs (gimp);
(* status_callback) (NULL, _("Transformation procedures"), 0.257);
......@@ -117,82 +117,82 @@ internal_procs_init (Gimp *gimp,
(* status_callback) (NULL, _("Edit procedures"), 0.291);
register_edit_procs (gimp);
(* status_callback) (NULL, _("File Operations"), 0.327);
(* status_callback) (NULL, _("File Operations"), 0.326);
register_fileops_procs (gimp);
(* status_callback) (NULL, _("Floating selections"), 0.348);
(* status_callback) (NULL, _("Floating selections"), 0.347);
register_floating_sel_procs (gimp);
(* status_callback) (NULL, _("Font UI"), 0.361);
(* status_callback) (NULL, _("Font UI"), 0.36);
register_font_select_procs (gimp);
(* status_callback) (NULL, _("Fonts"), 0.367);
(* status_callback) (NULL, _("Fonts"), 0.366);
register_fonts_procs (gimp);
(* status_callback) (NULL, _("Gimprc procedures"), 0.371);
register_gimprc_procs (gimp);
(* status_callback) (NULL, _("Gradient"), 0.386);
(* status_callback) (NULL, _("Gradient"), 0.385);
register_gradient_procs (gimp);
(* status_callback) (NULL, _("Gradient UI"), 0.449);
(* status_callback) (NULL, _("Gradient UI"), 0.448);
register_gradient_select_procs (gimp);
(* status_callback) (NULL, _("Gradients"), 0.456);
(* status_callback) (NULL, _("Gradients"), 0.455);
register_gradients_procs (gimp);
(* status_callback) (NULL, _("Guide procedures"), 0.466);
(* status_callback) (NULL, _("Guide procedures"), 0.465);
register_guides_procs (gimp);
(* status_callback) (NULL, _("Help procedures"), 0.479);
(* status_callback) (NULL, _("Help procedures"), 0.478);
register_help_procs (gimp);
(* status_callback) (NULL, _("Image"), 0.481);
(* status_callback) (NULL, _("Image"), 0.48);
register_image_procs (gimp);
(* status_callback) (NULL, _("Layer"), 0.614);
(* status_callback) (NULL, _("Layer"), 0.613);
register_layer_procs (gimp);
(* status_callback) (NULL, _("Message procedures"), 0.671);
(* status_callback) (NULL, _("Message procedures"), 0.669);
register_message_procs (gimp);
(* status_callback) (NULL, _("Miscellaneous"), 0.677);
(* status_callback) (NULL, _("Miscellaneous"), 0.676);
register_misc_procs (gimp);
(* status_callback) (NULL, _("Paint Tool procedures"), 0.684);
(* status_callback) (NULL, _("Paint Tool procedures"), 0.682);
register_paint_tools_procs (gimp);
(* status_callback) (NULL, _("Palette"), 0.715);
(* status_callback) (NULL, _("Palette"), 0.714);
register_palette_procs (gimp);
(* status_callback) (NULL, _("Palette UI"), 0.745);
(* status_callback) (NULL, _("Palette UI"), 0.743);
register_palette_select_procs (gimp);
(* status_callback) (NULL, _("Palettes"), 0.751);
(* status_callback) (NULL, _("Palettes"), 0.749);
register_palettes_procs (gimp);
(* status_callback) (NULL, _("Parasite procedures"), 0.759);
(* status_callback) (NULL, _("Parasite procedures"), 0.758);
register_parasite_procs (gimp);
(* status_callback) (NULL, _("Paths"), 0.785);
(* status_callback) (NULL, _("Paths"), 0.783);
register_paths_procs (gimp);
(* status_callback) (NULL, _("Pattern"), 0.819);
(* status_callback) (NULL, _("Pattern"), 0.817);
register_pattern_procs (gimp);
(* status_callback) (NULL, _("Pattern UI"), 0.823);
(* status_callback) (NULL, _("Pattern UI"), 0.821);
register_pattern_select_procs (gimp);
(* status_callback) (NULL, _("Patterns"), 0.829);