gimp/app/plug-in/gimpplugin-progress.c

367 lines
10 KiB
C
Raw Normal View History

/* GIMP - The GNU Image Manipulation Program
1997-11-25 06:05:25 +08:00
* Copyright (C) 1995 Spencer Kimball and Peter Mattis
*
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
* gimpplugin-progress.c
*
* This program is free software: you can redistribute it and/or modify
1997-11-25 06:05:25 +08:00
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 3 of the License, or
1997-11-25 06:05:25 +08:00
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
1997-11-25 06:05:25 +08:00
*/
1997-11-25 06:05:25 +08:00
#include "config.h"
1999-03-07 20:56:03 +08:00
#include <gdk-pixbuf/gdk-pixbuf.h>
#include <gegl.h>
1997-11-25 06:05:25 +08:00
badly chopped into the new files below. Pass around much more "PlugIn" and 2002-03-20 Michael Natterer <mitch@gimp.org> * app/plug-in/plug-in.[ch]: badly chopped into the new files below. Pass around much more "PlugIn" and "Gimp" pointers instead of using "current_plug_in" and "the_gimp". Needs much more hacking though... :( * app/plug-in/Makefile.am * app/plug-in/plug-in-def.[ch] * app/plug-in/plug-in-params.[ch] * app/plug-in/plug-in-progress.[ch] * app/plug-in/plug-ins.[ch]: new files. * app/gui/Makefile.am * app/gui/plug-in-commands.[ch] * app/gui/plug-in-menus.[ch]: ditto. * app/plug-in/plug-in-rc.c * app/plug-in/plug-in-types.h: changed accordingly. * app/pdb/procedural_db.c: changed procedural_db_destroy_args() so it can be used from plug_in_args_destroy(). Fixed a parasite memory leak (or introduced a new SEGV, we'll see...). * app/display/Makefile.am: another "truly ugly hack" until the plug-in menu stuff is chopped even more... * app/gui/commands.[ch]: removed filters_repeat_cmd_callback() here, it is now in plug-in-commands.[ch]. * app/widgets/gimpitemfactory.[ch]: removed all gimp_menu_item_*() hacks. We have a GimpItemFactory available in most cases we used to call this functions, and can use gimp_item_factors_from_path() in all other cases. The item factory stuff needs more work anyway... * app/app_procs.c * app/gimphelp.c * app/display/gimpdisplayshell.c * app/gui/file-dialog-utils.c * app/gui/file-open-dialog.[ch] * app/gui/file-save-dialog.[ch] * app/gui/gui.c * app/gui/menus.c * app/gui/paths-dialog.c * app/xcf/xcf.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/plug_in.pdb: changed accordingly (includes, renamed functions and gimp_menu_item_*() removal). * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/plug_in_cmds.c: regenerated.
2002-03-21 01:46:13 +08:00
#include "plug-in-types.h"
#include "core/gimp.h"
added a shitload of new GTypes and corresponding GParamSpecs to use them 2006-04-03 Michael Natterer <mitch@gimp.org> * app/core/gimpparamspecs.[ch]: added a shitload of new GTypes and corresponding GParamSpecs to use them as PDB arguments. Each GimpPDBArgType has one or more corresponding GTypes in the core now. * app/pdb/gimpargument.[ch] (struct GimpArgument) (struct GimpArgumentSpec): removed "value" member because the GValue's/GParamSpec's GType carries just as much information now. (gimp_argument_type_to_pdb_arg_type): new function which maps GTypes to GimpPDBArgType. (gimp_pdb_arg_type_to_string): formerly known as procedural_db_type_name(). * app/pdb/gimpprocedure.[ch] * app/pdb/procedural_db.[ch]: completely switch to GValue. Use the new GParamSpecs for procedure arguments. GimpPDBArgType is only used for adding compat args/values of plug-in procedures. (procedural_db_run_proc): the va_list expects a sequence of (GType, value, GType, value, ..., G_TYPE_NONE) now. * app/plug-in/plug-in-params.[ch]: changed accordingly. (plug_in_param_defs_check): removed this function. * app/plug-in/plug-in-message.c (plug_in_handle_proc_install): use plug_in_proc_args_check() instead and initialize the GimpProcedure before doing so. * tools/pdbgen/app.pl * tools/pdbgen/pdb.pl: use the new param spec types and their utility functions. Changed argument/value registration accordingly. * app/pdb/procedural-db-query.c * app/actions/plug-in-commands.c * app/actions/vectors-commands.c * app/core/gimppdbprogress.c * app/dialogs/about-dialog.c * app/file/file-open.c * app/file/file-save.c * app/plug-in/plug-in-progress.c * app/plug-in/plug-in-rc.c * app/plug-in/plug-ins.c * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimphelp.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/procedural_db.pdb: changed accordingly. * app/pdb/*_cmds.c: regenerated.
2006-04-04 04:54:55 +08:00
#include "core/gimpparamspecs.h"
#include "core/gimppdbprogress.h"
Redid the whole internal progress stuff: don't pass around 2004-08-10 Michael Natterer <mitch@gimp.org> Redid the whole internal progress stuff: don't pass around progress_callback and progress_data; instead, provide a pointer to a GimpProgressInterface which can be implemented by a variety of backends. Addresses (but not yet fixes) bugs #6010, #97266 and #135185. * app/display/Makefile.am * app/display/gimpprogress.[ch]: removed the old progress hack. * app/core/Makefile.am * app/core/core-types.h * app/core/gimpprogress.[ch]: implement GimpProgressInterface. * app/widgets/Makefile.am * app/widgets/widgets-types.h * app/widgets/gimpprogressdialog.[ch]: the standalone progress dialog as widget implementing GimpProgressInterface. * app/display/gimpdisplay.c * app/display/gimpstatusbar.[ch] * app/widgets/gimpfiledialog.[ch] * app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface implementation to these classes. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: replaced the old progress vtable entries by two new to create and destroy a GimpProgressDialog in case no other progress is available. * app/pdb/procedural_db.[ch] * app/plug-in/plug-in-run.[ch] * tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and all plug-ins. * app/plug-in/plug-in.[ch] * app/plug-in/plug-ins.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c: handle the case there the plug-in was crated with a progress as well as the case where it wasn't. * app/app_procs.c * app/batch.c * app/xcf/xcf.c * app/file/file-open.[ch] * app/file/file-save.[ch] * app/widgets/gimphelp.c * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: changed accordingly. * app/core/gimpimagefile.[ch] * app/display/gimpdisplayshell-dnd.c * app/gui/file-open-dialog.c * app/gui/file-open-location-dialog.c * app/gui/file-save-dialog.c * app/widgets/gimplayertreeview.c * app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file related functions. Embed the progress in the file dialog where possible. * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-convert.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage-scale.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/core/gimplayer.c * app/core/gimpselection.c * app/vectors/gimpvectors.c: replaced callback/data by GimpProgress. * app/tools/gimpblendtool.c * app/tools/gimptransformtool.c * app/gui/convert-dialog.c * app/actions/documents-commands.c * app/actions/file-commands.c * app/actions/image-commands.c * app/actions/layers-commands.c * app/actions/plug-in-commands.c * app/actions/vectors-commands.c * tools/pdbgen/pdb/convert.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb: changed callers accordingly. * app/pdb/*_cmds.c: regenerated.
2004-08-11 02:47:21 +08:00
#include "core/gimpprogress.h"
1997-11-25 06:05:25 +08:00
app/pdb/Makefile.am app/pdb/pdb-types.h new object GimpPDB which keeps all 2006-04-26 Michael Natterer <mitch@gimp.org> * app/pdb/Makefile.am * app/pdb/pdb-types.h * app/pdb/gimppdb.[ch]: new object GimpPDB which keeps all procedures and functions to register and run them. Renamed all functions and did some cleanups. * app/pdb/gimp-pdb.[ch] * app/core/gimp.[ch]: removed the same stuff here. * app/pdb/gimp-pdb-query.[ch]: removed these files... * app/pdb/gimppdb-query.[ch]: ...added here as members of GimpPDB. * app/pdb/gimp-pdb-compat.h: fix include guard. * app/batch.c * app/actions/vectors-commands.c * app/dialogs/about-dialog.c * app/file/file-open.c * app/file/file-save.c * app/plug-in/plug-in-message.c * app/plug-in/plug-ins.c * app/widgets/gimpfiledialog.c * app/widgets/gimphelp.c * app/xcf/xcf.c * tools/pdbgen/pdb/brush_select.pdb * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/font_select.pdb * tools/pdbgen/pdb/gradient_select.pdb * tools/pdbgen/pdb/palette_select.pdb * tools/pdbgen/pdb/pattern_select.pdb * tools/pdbgen/pdb/procedural_db.pdb: changed includes and function calls accordingly. * tools/pdbgen/app.pl: pass around GimpPDB instead of Gimp pointers to register the internal procedures with. Changed some newlines in the generated code. * app/pdb/*_cmds.c * app/pdb/internal_procs.[ch]: regenerated. * app/core/gimppdbprogress.[ch] * app/widgets/gimppdbdialog.[ch]: added "pdb" CONSTRUCT_ONLY properties. * app/plug-in/plug-in-progress.c * app/gui/gui-vtable.c: pass gimp->pdb when creating them. * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: use the new local pdb pointers instead of some foo->bar->gimp->pdb overkill.
2006-04-26 17:13:47 +08:00
#include "pdb/gimppdb.h"
#include "pdb/gimppdberror.h"
removed gimp_main_loop() and gimp_main_loop_quit() because they were a 2003-02-03 Michael Natterer <mitch@gimp.org> * app/core/gimp.[ch]: removed gimp_main_loop() and gimp_main_loop_quit() because they were a temp_hack until plug-ins have their own main loops. Added gimp_threads_enter() and gimp_threads_leave() instead. * app/gui/gui.c: ditto: removed the main loop stuff and added functions which call GDK_THREADS_ENTER() and GDK_THREADS_LEAVE() instead. * app/app_procs.c: create the main GMainLoop here and use gimp_threads_enter,leave(). * app/plug-in/plug-in.[ch]: added a ref_count per plug-in so the plug-in is not destroyed under our feet while running a recursive main loop. Added plug_in_ref(). Changed plug_in_destroy() to plug_in_unref(). Don't destroy the plug-in if plug_in_open() fails. Call gimp_threads_enter,leave() around g_main_loop_run(). Changed the way plug_in_push,pop() are used: "current_plug_in" is no longer the plug-in which currently uses the wire, but the plug-in which currently preforms a PDB call (the former meaning was needed when wire callbacks had no plug-in context but needed to get the plug-in from the global "current_plug_in" variable). Removed all calls to plug_in_push,pop() from this file. * app/plug-in/plug-in-message.c (plug_in_handle_proc_run): added plug_in_push,pop() around procedural_db_execute(). No need to construct an error return value if the procedure was not found because procedural_db_execute() already does this. Removed all other plug_in_push,pop(). Added more checks to plug-in message handlers and kill the plug-in if it misbehaves. Cleanup. * app/plug-in/plug-in-progress.c (plug_in_progress_cancel): if the plug-in runs synchronously, provide a GIMP_PDB_CANCEL return value so we don't see error messages about the "failed" procedure. * app/plug-in/plug-in-run.c: removed plug_in_push,pop() stuff. Set the new plug_in->starting_ext boolean while starting an extension so the extension_ack handler knows that it wasn't called from a buggy plug-in. Cleanup. * app/plug-in/plug-ins.c: Cleanup.
2003-02-03 21:21:31 +08:00
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
#include "gimpplugin.h"
#include "gimpplugin-progress.h"
app/plug-in/Makefile.am app/plug-in/plug-in-types.h new object which keeps 2006-04-29 Michael Natterer <mitch@gimp.org> * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager.[ch]: new object which keeps all plug-in related stuff that was kept in the Gimp instance. Has "menu-branch-added" and "last-plug-in-changed" signals. * app/plug-in/plug-ins.[ch]: removed, all its functions are in GimpPlugInManager now. * app/core/gimpmarshal.list: new marshaller for the new object. * app/core/gimp.[ch]: removed all plug-in related stuff and keep a GimpPlugInManager around. * app/plug-in/plug-in-data.[ch] * app/plug-in/plug-in-file.[ch] * app/plug-in/plug-in-help-domain.[ch] * app/plug-in/plug-in-locale-domain.[ch] * app/plug-in/plug-in-menu-branch.[ch] * app/plug-in/plug-ins-query.[ch]: removed... * app/plug-in/gimppluginmanager-data.[ch] * app/plug-in/gimppluginmanager-file.[ch] * app/plug-in/gimppluginmanager-help-domain.[ch] * app/plug-in/gimppluginmanager-locale-domain.[ch] * app/plug-in/gimppluginmanager-menu-branch.[ch] * app/plug-in/gimppluginmanager-query.[ch]: ...and added as methods of GimpPlugInManager. * app/plug-in/plug-in-debug.[ch] * app/plug-in/plug-in-shm.[ch]: removed... * app/plug-in/gimpplugindebug.[ch] * app/plug-in/gimppluginshm.[ch]: ...and added as properly namespeced structs with constructors and destructors. * app/core/Makefile.am * app/core/gimpenvirontable.[ch] * app/core/gimpinterpreterdb.[ch]: removed... * app/plug-in/gimpenvirontable.[ch] * app/plug-in/gimpinterpreterdb.[ch]: ...and added here unchanged. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: remove gimp_menus_create_branch() and all related stuff. * app/actions/plug-in-actions.[ch]: connect to the plug-in-manager's "menu-path-added" signal and create menu branch actions accordingly. * app/plug-in/plug-in-context.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c * app/plug-in/plug-in-run.[ch] * app/plug-in/plug-in.[ch] * app/app_procs.c * app/actions/file-commands.c * app/actions/plug-in-commands.c * app/core/gimpimage.c * app/dialogs/file-open-location-dialog.c * app/dialogs/file-save-dialog.c * app/file/file-open.c * app/gui/gui.c * app/menus/plug-in-menus.c * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/widgets/gimpdnd-xds.c * app/widgets/gimpfiledialog.c * app/widgets/gimpfileprocview.c * app/widgets/gimphelp.c * app/widgets/gimpthumbbox.c * app/xcf/xcf.c * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: follow above refactoring. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/procedural_db_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-04-29 06:26:51 +08:00
#include "gimppluginmanager.h"
#include "gimptemporaryprocedure.h"
1997-11-25 06:05:25 +08:00
#include "gimp-intl.h"
1997-11-25 06:05:25 +08:00
badly chopped into the new files below. Pass around much more "PlugIn" and 2002-03-20 Michael Natterer <mitch@gimp.org> * app/plug-in/plug-in.[ch]: badly chopped into the new files below. Pass around much more "PlugIn" and "Gimp" pointers instead of using "current_plug_in" and "the_gimp". Needs much more hacking though... :( * app/plug-in/Makefile.am * app/plug-in/plug-in-def.[ch] * app/plug-in/plug-in-params.[ch] * app/plug-in/plug-in-progress.[ch] * app/plug-in/plug-ins.[ch]: new files. * app/gui/Makefile.am * app/gui/plug-in-commands.[ch] * app/gui/plug-in-menus.[ch]: ditto. * app/plug-in/plug-in-rc.c * app/plug-in/plug-in-types.h: changed accordingly. * app/pdb/procedural_db.c: changed procedural_db_destroy_args() so it can be used from plug_in_args_destroy(). Fixed a parasite memory leak (or introduced a new SEGV, we'll see...). * app/display/Makefile.am: another "truly ugly hack" until the plug-in menu stuff is chopped even more... * app/gui/commands.[ch]: removed filters_repeat_cmd_callback() here, it is now in plug-in-commands.[ch]. * app/widgets/gimpitemfactory.[ch]: removed all gimp_menu_item_*() hacks. We have a GimpItemFactory available in most cases we used to call this functions, and can use gimp_item_factors_from_path() in all other cases. The item factory stuff needs more work anyway... * app/app_procs.c * app/gimphelp.c * app/display/gimpdisplayshell.c * app/gui/file-dialog-utils.c * app/gui/file-open-dialog.[ch] * app/gui/file-save-dialog.[ch] * app/gui/gui.c * app/gui/menus.c * app/gui/paths-dialog.c * app/xcf/xcf.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/plug_in.pdb: changed accordingly (includes, renamed functions and gimp_menu_item_*() removal). * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/plug_in_cmds.c: regenerated.
2002-03-21 01:46:13 +08:00
/* local function prototypes */
1997-11-25 06:05:25 +08:00
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
static void gimp_plug_in_progress_cancel_callback (GimpProgress *progress,
GimpPlugIn *plug_in);
1997-11-25 06:05:25 +08:00
badly chopped into the new files below. Pass around much more "PlugIn" and 2002-03-20 Michael Natterer <mitch@gimp.org> * app/plug-in/plug-in.[ch]: badly chopped into the new files below. Pass around much more "PlugIn" and "Gimp" pointers instead of using "current_plug_in" and "the_gimp". Needs much more hacking though... :( * app/plug-in/Makefile.am * app/plug-in/plug-in-def.[ch] * app/plug-in/plug-in-params.[ch] * app/plug-in/plug-in-progress.[ch] * app/plug-in/plug-ins.[ch]: new files. * app/gui/Makefile.am * app/gui/plug-in-commands.[ch] * app/gui/plug-in-menus.[ch]: ditto. * app/plug-in/plug-in-rc.c * app/plug-in/plug-in-types.h: changed accordingly. * app/pdb/procedural_db.c: changed procedural_db_destroy_args() so it can be used from plug_in_args_destroy(). Fixed a parasite memory leak (or introduced a new SEGV, we'll see...). * app/display/Makefile.am: another "truly ugly hack" until the plug-in menu stuff is chopped even more... * app/gui/commands.[ch]: removed filters_repeat_cmd_callback() here, it is now in plug-in-commands.[ch]. * app/widgets/gimpitemfactory.[ch]: removed all gimp_menu_item_*() hacks. We have a GimpItemFactory available in most cases we used to call this functions, and can use gimp_item_factors_from_path() in all other cases. The item factory stuff needs more work anyway... * app/app_procs.c * app/gimphelp.c * app/display/gimpdisplayshell.c * app/gui/file-dialog-utils.c * app/gui/file-open-dialog.[ch] * app/gui/file-save-dialog.[ch] * app/gui/gui.c * app/gui/menus.c * app/gui/paths-dialog.c * app/xcf/xcf.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/plug_in.pdb: changed accordingly (includes, renamed functions and gimp_menu_item_*() removal). * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/plug_in_cmds.c: regenerated.
2002-03-21 01:46:13 +08:00
/* public functions */
1997-11-25 06:05:25 +08:00
gint
gimp_plug_in_progress_attach (GimpProgress *progress)
{
gint attach_count;
g_return_val_if_fail (GIMP_IS_PROGRESS (progress), 0);
attach_count =
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (progress),
"plug-in-progress-attach-count"));
attach_count++;
g_object_set_data (G_OBJECT (progress), "plug-in-progress-attach-count",
2012-08-14 21:36:23 +08:00
GINT_TO_POINTER (attach_count));
return attach_count;
}
gint
gimp_plug_in_progress_detach (GimpProgress *progress)
{
gint attach_count;
g_return_val_if_fail (GIMP_IS_PROGRESS (progress), 0);
attach_count =
GPOINTER_TO_INT (g_object_get_data (G_OBJECT (progress),
"plug-in-progress-attach-count"));
attach_count--;
g_object_set_data (G_OBJECT (progress), "plug-in-progress-attach-count",
2012-08-14 21:36:23 +08:00
GINT_TO_POINTER (attach_count));
return attach_count;
}
void
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_start (GimpPlugIn *plug_in,
const gchar *message,
GimpObject *display)
1997-11-25 06:05:25 +08:00
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
GimpPlugInProcFrame *proc_frame;
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_if_fail (GIMP_IS_PLUG_IN (plug_in));
g_return_if_fail (display == NULL || GIMP_IS_OBJECT (display));
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
proc_frame = gimp_plug_in_get_proc_frame (plug_in);
if (! proc_frame->progress)
Redid the whole internal progress stuff: don't pass around 2004-08-10 Michael Natterer <mitch@gimp.org> Redid the whole internal progress stuff: don't pass around progress_callback and progress_data; instead, provide a pointer to a GimpProgressInterface which can be implemented by a variety of backends. Addresses (but not yet fixes) bugs #6010, #97266 and #135185. * app/display/Makefile.am * app/display/gimpprogress.[ch]: removed the old progress hack. * app/core/Makefile.am * app/core/core-types.h * app/core/gimpprogress.[ch]: implement GimpProgressInterface. * app/widgets/Makefile.am * app/widgets/widgets-types.h * app/widgets/gimpprogressdialog.[ch]: the standalone progress dialog as widget implementing GimpProgressInterface. * app/display/gimpdisplay.c * app/display/gimpstatusbar.[ch] * app/widgets/gimpfiledialog.[ch] * app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface implementation to these classes. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: replaced the old progress vtable entries by two new to create and destroy a GimpProgressDialog in case no other progress is available. * app/pdb/procedural_db.[ch] * app/plug-in/plug-in-run.[ch] * tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and all plug-ins. * app/plug-in/plug-in.[ch] * app/plug-in/plug-ins.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c: handle the case there the plug-in was crated with a progress as well as the case where it wasn't. * app/app_procs.c * app/batch.c * app/xcf/xcf.c * app/file/file-open.[ch] * app/file/file-save.[ch] * app/widgets/gimphelp.c * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: changed accordingly. * app/core/gimpimagefile.[ch] * app/display/gimpdisplayshell-dnd.c * app/gui/file-open-dialog.c * app/gui/file-open-location-dialog.c * app/gui/file-save-dialog.c * app/widgets/gimplayertreeview.c * app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file related functions. Embed the progress in the file dialog where possible. * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-convert.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage-scale.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/core/gimplayer.c * app/core/gimpselection.c * app/vectors/gimpvectors.c: replaced callback/data by GimpProgress. * app/tools/gimpblendtool.c * app/tools/gimptransformtool.c * app/gui/convert-dialog.c * app/actions/documents-commands.c * app/actions/file-commands.c * app/actions/image-commands.c * app/actions/layers-commands.c * app/actions/plug-in-commands.c * app/actions/vectors-commands.c * tools/pdbgen/pdb/convert.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb: changed callers accordingly. * app/pdb/*_cmds.c: regenerated.
2004-08-11 02:47:21 +08:00
{
app/plug-in/Makefile.am app/plug-in/plug-in-types.h new object which keeps 2006-04-29 Michael Natterer <mitch@gimp.org> * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager.[ch]: new object which keeps all plug-in related stuff that was kept in the Gimp instance. Has "menu-branch-added" and "last-plug-in-changed" signals. * app/plug-in/plug-ins.[ch]: removed, all its functions are in GimpPlugInManager now. * app/core/gimpmarshal.list: new marshaller for the new object. * app/core/gimp.[ch]: removed all plug-in related stuff and keep a GimpPlugInManager around. * app/plug-in/plug-in-data.[ch] * app/plug-in/plug-in-file.[ch] * app/plug-in/plug-in-help-domain.[ch] * app/plug-in/plug-in-locale-domain.[ch] * app/plug-in/plug-in-menu-branch.[ch] * app/plug-in/plug-ins-query.[ch]: removed... * app/plug-in/gimppluginmanager-data.[ch] * app/plug-in/gimppluginmanager-file.[ch] * app/plug-in/gimppluginmanager-help-domain.[ch] * app/plug-in/gimppluginmanager-locale-domain.[ch] * app/plug-in/gimppluginmanager-menu-branch.[ch] * app/plug-in/gimppluginmanager-query.[ch]: ...and added as methods of GimpPlugInManager. * app/plug-in/plug-in-debug.[ch] * app/plug-in/plug-in-shm.[ch]: removed... * app/plug-in/gimpplugindebug.[ch] * app/plug-in/gimppluginshm.[ch]: ...and added as properly namespeced structs with constructors and destructors. * app/core/Makefile.am * app/core/gimpenvirontable.[ch] * app/core/gimpinterpreterdb.[ch]: removed... * app/plug-in/gimpenvirontable.[ch] * app/plug-in/gimpinterpreterdb.[ch]: ...and added here unchanged. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: remove gimp_menus_create_branch() and all related stuff. * app/actions/plug-in-actions.[ch]: connect to the plug-in-manager's "menu-path-added" signal and create menu branch actions accordingly. * app/plug-in/plug-in-context.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c * app/plug-in/plug-in-run.[ch] * app/plug-in/plug-in.[ch] * app/app_procs.c * app/actions/file-commands.c * app/actions/plug-in-commands.c * app/core/gimpimage.c * app/dialogs/file-open-location-dialog.c * app/dialogs/file-save-dialog.c * app/file/file-open.c * app/gui/gui.c * app/menus/plug-in-menus.c * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/widgets/gimpdnd-xds.c * app/widgets/gimpfiledialog.c * app/widgets/gimpfileprocview.c * app/widgets/gimphelp.c * app/widgets/gimpthumbbox.c * app/xcf/xcf.c * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: follow above refactoring. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/procedural_db_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-04-29 06:26:51 +08:00
proc_frame->progress = gimp_new_progress (plug_in->manager->gimp,
display);
Redid the whole internal progress stuff: don't pass around 2004-08-10 Michael Natterer <mitch@gimp.org> Redid the whole internal progress stuff: don't pass around progress_callback and progress_data; instead, provide a pointer to a GimpProgressInterface which can be implemented by a variety of backends. Addresses (but not yet fixes) bugs #6010, #97266 and #135185. * app/display/Makefile.am * app/display/gimpprogress.[ch]: removed the old progress hack. * app/core/Makefile.am * app/core/core-types.h * app/core/gimpprogress.[ch]: implement GimpProgressInterface. * app/widgets/Makefile.am * app/widgets/widgets-types.h * app/widgets/gimpprogressdialog.[ch]: the standalone progress dialog as widget implementing GimpProgressInterface. * app/display/gimpdisplay.c * app/display/gimpstatusbar.[ch] * app/widgets/gimpfiledialog.[ch] * app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface implementation to these classes. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: replaced the old progress vtable entries by two new to create and destroy a GimpProgressDialog in case no other progress is available. * app/pdb/procedural_db.[ch] * app/plug-in/plug-in-run.[ch] * tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and all plug-ins. * app/plug-in/plug-in.[ch] * app/plug-in/plug-ins.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c: handle the case there the plug-in was crated with a progress as well as the case where it wasn't. * app/app_procs.c * app/batch.c * app/xcf/xcf.c * app/file/file-open.[ch] * app/file/file-save.[ch] * app/widgets/gimphelp.c * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: changed accordingly. * app/core/gimpimagefile.[ch] * app/display/gimpdisplayshell-dnd.c * app/gui/file-open-dialog.c * app/gui/file-open-location-dialog.c * app/gui/file-save-dialog.c * app/widgets/gimplayertreeview.c * app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file related functions. Embed the progress in the file dialog where possible. * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-convert.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage-scale.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/core/gimplayer.c * app/core/gimpselection.c * app/vectors/gimpvectors.c: replaced callback/data by GimpProgress. * app/tools/gimpblendtool.c * app/tools/gimptransformtool.c * app/gui/convert-dialog.c * app/actions/documents-commands.c * app/actions/file-commands.c * app/actions/image-commands.c * app/actions/layers-commands.c * app/actions/plug-in-commands.c * app/actions/vectors-commands.c * tools/pdbgen/pdb/convert.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb: changed callers accordingly. * app/pdb/*_cmds.c: regenerated.
2004-08-11 02:47:21 +08:00
if (proc_frame->progress)
{
proc_frame->progress_created = TRUE;
g_object_ref (proc_frame->progress);
gimp_plug_in_progress_attach (proc_frame->progress);
}
Redid the whole internal progress stuff: don't pass around 2004-08-10 Michael Natterer <mitch@gimp.org> Redid the whole internal progress stuff: don't pass around progress_callback and progress_data; instead, provide a pointer to a GimpProgressInterface which can be implemented by a variety of backends. Addresses (but not yet fixes) bugs #6010, #97266 and #135185. * app/display/Makefile.am * app/display/gimpprogress.[ch]: removed the old progress hack. * app/core/Makefile.am * app/core/core-types.h * app/core/gimpprogress.[ch]: implement GimpProgressInterface. * app/widgets/Makefile.am * app/widgets/widgets-types.h * app/widgets/gimpprogressdialog.[ch]: the standalone progress dialog as widget implementing GimpProgressInterface. * app/display/gimpdisplay.c * app/display/gimpstatusbar.[ch] * app/widgets/gimpfiledialog.[ch] * app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface implementation to these classes. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: replaced the old progress vtable entries by two new to create and destroy a GimpProgressDialog in case no other progress is available. * app/pdb/procedural_db.[ch] * app/plug-in/plug-in-run.[ch] * tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and all plug-ins. * app/plug-in/plug-in.[ch] * app/plug-in/plug-ins.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c: handle the case there the plug-in was crated with a progress as well as the case where it wasn't. * app/app_procs.c * app/batch.c * app/xcf/xcf.c * app/file/file-open.[ch] * app/file/file-save.[ch] * app/widgets/gimphelp.c * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: changed accordingly. * app/core/gimpimagefile.[ch] * app/display/gimpdisplayshell-dnd.c * app/gui/file-open-dialog.c * app/gui/file-open-location-dialog.c * app/gui/file-save-dialog.c * app/widgets/gimplayertreeview.c * app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file related functions. Embed the progress in the file dialog where possible. * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-convert.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage-scale.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/core/gimplayer.c * app/core/gimpselection.c * app/vectors/gimpvectors.c: replaced callback/data by GimpProgress. * app/tools/gimpblendtool.c * app/tools/gimptransformtool.c * app/gui/convert-dialog.c * app/actions/documents-commands.c * app/actions/file-commands.c * app/actions/image-commands.c * app/actions/layers-commands.c * app/actions/plug-in-commands.c * app/actions/vectors-commands.c * tools/pdbgen/pdb/convert.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb: changed callers accordingly. * app/pdb/*_cmds.c: regenerated.
2004-08-11 02:47:21 +08:00
}
if (proc_frame->progress)
Redid the whole internal progress stuff: don't pass around 2004-08-10 Michael Natterer <mitch@gimp.org> Redid the whole internal progress stuff: don't pass around progress_callback and progress_data; instead, provide a pointer to a GimpProgressInterface which can be implemented by a variety of backends. Addresses (but not yet fixes) bugs #6010, #97266 and #135185. * app/display/Makefile.am * app/display/gimpprogress.[ch]: removed the old progress hack. * app/core/Makefile.am * app/core/core-types.h * app/core/gimpprogress.[ch]: implement GimpProgressInterface. * app/widgets/Makefile.am * app/widgets/widgets-types.h * app/widgets/gimpprogressdialog.[ch]: the standalone progress dialog as widget implementing GimpProgressInterface. * app/display/gimpdisplay.c * app/display/gimpstatusbar.[ch] * app/widgets/gimpfiledialog.[ch] * app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface implementation to these classes. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: replaced the old progress vtable entries by two new to create and destroy a GimpProgressDialog in case no other progress is available. * app/pdb/procedural_db.[ch] * app/plug-in/plug-in-run.[ch] * tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and all plug-ins. * app/plug-in/plug-in.[ch] * app/plug-in/plug-ins.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c: handle the case there the plug-in was crated with a progress as well as the case where it wasn't. * app/app_procs.c * app/batch.c * app/xcf/xcf.c * app/file/file-open.[ch] * app/file/file-save.[ch] * app/widgets/gimphelp.c * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: changed accordingly. * app/core/gimpimagefile.[ch] * app/display/gimpdisplayshell-dnd.c * app/gui/file-open-dialog.c * app/gui/file-open-location-dialog.c * app/gui/file-save-dialog.c * app/widgets/gimplayertreeview.c * app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file related functions. Embed the progress in the file dialog where possible. * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-convert.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage-scale.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/core/gimplayer.c * app/core/gimpselection.c * app/vectors/gimpvectors.c: replaced callback/data by GimpProgress. * app/tools/gimpblendtool.c * app/tools/gimptransformtool.c * app/gui/convert-dialog.c * app/actions/documents-commands.c * app/actions/file-commands.c * app/actions/image-commands.c * app/actions/layers-commands.c * app/actions/plug-in-commands.c * app/actions/vectors-commands.c * tools/pdbgen/pdb/convert.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb: changed callers accordingly. * app/pdb/*_cmds.c: regenerated.
2004-08-11 02:47:21 +08:00
{
if (! proc_frame->progress_cancel_id)
{
g_object_add_weak_pointer (G_OBJECT (proc_frame->progress),
(gpointer) &proc_frame->progress);
proc_frame->progress_cancel_id =
g_signal_connect (proc_frame->progress, "cancel",
G_CALLBACK (gimp_plug_in_progress_cancel_callback),
plug_in);
}
if (gimp_progress_is_active (proc_frame->progress))
Redid the whole internal progress stuff: don't pass around 2004-08-10 Michael Natterer <mitch@gimp.org> Redid the whole internal progress stuff: don't pass around progress_callback and progress_data; instead, provide a pointer to a GimpProgressInterface which can be implemented by a variety of backends. Addresses (but not yet fixes) bugs #6010, #97266 and #135185. * app/display/Makefile.am * app/display/gimpprogress.[ch]: removed the old progress hack. * app/core/Makefile.am * app/core/core-types.h * app/core/gimpprogress.[ch]: implement GimpProgressInterface. * app/widgets/Makefile.am * app/widgets/widgets-types.h * app/widgets/gimpprogressdialog.[ch]: the standalone progress dialog as widget implementing GimpProgressInterface. * app/display/gimpdisplay.c * app/display/gimpstatusbar.[ch] * app/widgets/gimpfiledialog.[ch] * app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface implementation to these classes. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: replaced the old progress vtable entries by two new to create and destroy a GimpProgressDialog in case no other progress is available. * app/pdb/procedural_db.[ch] * app/plug-in/plug-in-run.[ch] * tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and all plug-ins. * app/plug-in/plug-in.[ch] * app/plug-in/plug-ins.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c: handle the case there the plug-in was crated with a progress as well as the case where it wasn't. * app/app_procs.c * app/batch.c * app/xcf/xcf.c * app/file/file-open.[ch] * app/file/file-save.[ch] * app/widgets/gimphelp.c * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: changed accordingly. * app/core/gimpimagefile.[ch] * app/display/gimpdisplayshell-dnd.c * app/gui/file-open-dialog.c * app/gui/file-open-location-dialog.c * app/gui/file-save-dialog.c * app/widgets/gimplayertreeview.c * app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file related functions. Embed the progress in the file dialog where possible. * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-convert.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage-scale.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/core/gimplayer.c * app/core/gimpselection.c * app/vectors/gimpvectors.c: replaced callback/data by GimpProgress. * app/tools/gimpblendtool.c * app/tools/gimptransformtool.c * app/gui/convert-dialog.c * app/actions/documents-commands.c * app/actions/file-commands.c * app/actions/image-commands.c * app/actions/layers-commands.c * app/actions/plug-in-commands.c * app/actions/vectors-commands.c * tools/pdbgen/pdb/convert.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb: changed callers accordingly. * app/pdb/*_cmds.c: regenerated.
2004-08-11 02:47:21 +08:00
{
if (message)
gimp_progress_set_text_literal (proc_frame->progress, message);
if (gimp_progress_get_value (proc_frame->progress) > 0.0)
gimp_progress_set_value (proc_frame->progress, 0.0);
}
else
{
gimp_progress_start (proc_frame->progress, TRUE,
"%s", message ? message : "");
Redid the whole internal progress stuff: don't pass around 2004-08-10 Michael Natterer <mitch@gimp.org> Redid the whole internal progress stuff: don't pass around progress_callback and progress_data; instead, provide a pointer to a GimpProgressInterface which can be implemented by a variety of backends. Addresses (but not yet fixes) bugs #6010, #97266 and #135185. * app/display/Makefile.am * app/display/gimpprogress.[ch]: removed the old progress hack. * app/core/Makefile.am * app/core/core-types.h * app/core/gimpprogress.[ch]: implement GimpProgressInterface. * app/widgets/Makefile.am * app/widgets/widgets-types.h * app/widgets/gimpprogressdialog.[ch]: the standalone progress dialog as widget implementing GimpProgressInterface. * app/display/gimpdisplay.c * app/display/gimpstatusbar.[ch] * app/widgets/gimpfiledialog.[ch] * app/widgets/gimpthumbbox.[ch]: added GimpProgressInterface implementation to these classes. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: replaced the old progress vtable entries by two new to create and destroy a GimpProgressDialog in case no other progress is available. * app/pdb/procedural_db.[ch] * app/plug-in/plug-in-run.[ch] * tools/pdbgen/app.pl: pass a GimpProgress to all PDB wrappers and all plug-ins. * app/plug-in/plug-in.[ch] * app/plug-in/plug-ins.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c: handle the case there the plug-in was crated with a progress as well as the case where it wasn't. * app/app_procs.c * app/batch.c * app/xcf/xcf.c * app/file/file-open.[ch] * app/file/file-save.[ch] * app/widgets/gimphelp.c * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: changed accordingly. * app/core/gimpimagefile.[ch] * app/display/gimpdisplayshell-dnd.c * app/gui/file-open-dialog.c * app/gui/file-open-location-dialog.c * app/gui/file-save-dialog.c * app/widgets/gimplayertreeview.c * app/widgets/gimptoolbox-dnd.c: pass a GimpProgress to all file related functions. Embed the progress in the file dialog where possible. * app/core/gimpdrawable-blend.[ch] * app/core/gimpdrawable-transform.[ch] * app/core/gimpimage-convert.[ch] * app/core/gimpimage-flip.[ch] * app/core/gimpimage-resize.[ch] * app/core/gimpimage-rotate.[ch] * app/core/gimpimage-scale.[ch] * app/core/gimpitem-linked.[ch] * app/core/gimpitem.[ch] * app/core/gimpchannel.c * app/core/gimpdrawable.c * app/core/gimplayer.c * app/core/gimpselection.c * app/vectors/gimpvectors.c: replaced callback/data by GimpProgress. * app/tools/gimpblendtool.c * app/tools/gimptransformtool.c * app/gui/convert-dialog.c * app/actions/documents-commands.c * app/actions/file-commands.c * app/actions/image-commands.c * app/actions/layers-commands.c * app/actions/plug-in-commands.c * app/actions/vectors-commands.c * tools/pdbgen/pdb/convert.pdb * tools/pdbgen/pdb/edit.pdb * tools/pdbgen/pdb/image.pdb * tools/pdbgen/pdb/layer.pdb: changed callers accordingly. * app/pdb/*_cmds.c: regenerated.
2004-08-11 02:47:21 +08:00
}
}
1997-11-25 06:05:25 +08:00
}
void
gimp_plug_in_progress_end (GimpPlugIn *plug_in,
GimpPlugInProcFrame *proc_frame)
1997-11-25 06:05:25 +08:00
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_if_fail (GIMP_IS_PLUG_IN (plug_in));
g_return_if_fail (proc_frame != NULL);
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.
2005-09-10 02:07:31 +08:00
if (proc_frame->progress)
{
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.
2005-09-10 02:07:31 +08:00
if (proc_frame->progress_cancel_id)
{
g_signal_handler_disconnect (proc_frame->progress,
proc_frame->progress_cancel_id);
proc_frame->progress_cancel_id = 0;
g_object_remove_weak_pointer (G_OBJECT (proc_frame->progress),
(gpointer) &proc_frame->progress);
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.
2005-09-10 02:07:31 +08:00
}
if (gimp_plug_in_progress_detach (proc_frame->progress) < 1 &&
gimp_progress_is_active (proc_frame->progress))
{
gimp_progress_end (proc_frame->progress);
}
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.
2005-09-10 02:07:31 +08:00
if (proc_frame->progress_created)
{
app/plug-in/Makefile.am app/plug-in/plug-in-types.h new object which keeps 2006-04-29 Michael Natterer <mitch@gimp.org> * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager.[ch]: new object which keeps all plug-in related stuff that was kept in the Gimp instance. Has "menu-branch-added" and "last-plug-in-changed" signals. * app/plug-in/plug-ins.[ch]: removed, all its functions are in GimpPlugInManager now. * app/core/gimpmarshal.list: new marshaller for the new object. * app/core/gimp.[ch]: removed all plug-in related stuff and keep a GimpPlugInManager around. * app/plug-in/plug-in-data.[ch] * app/plug-in/plug-in-file.[ch] * app/plug-in/plug-in-help-domain.[ch] * app/plug-in/plug-in-locale-domain.[ch] * app/plug-in/plug-in-menu-branch.[ch] * app/plug-in/plug-ins-query.[ch]: removed... * app/plug-in/gimppluginmanager-data.[ch] * app/plug-in/gimppluginmanager-file.[ch] * app/plug-in/gimppluginmanager-help-domain.[ch] * app/plug-in/gimppluginmanager-locale-domain.[ch] * app/plug-in/gimppluginmanager-menu-branch.[ch] * app/plug-in/gimppluginmanager-query.[ch]: ...and added as methods of GimpPlugInManager. * app/plug-in/plug-in-debug.[ch] * app/plug-in/plug-in-shm.[ch]: removed... * app/plug-in/gimpplugindebug.[ch] * app/plug-in/gimppluginshm.[ch]: ...and added as properly namespeced structs with constructors and destructors. * app/core/Makefile.am * app/core/gimpenvirontable.[ch] * app/core/gimpinterpreterdb.[ch]: removed... * app/plug-in/gimpenvirontable.[ch] * app/plug-in/gimpinterpreterdb.[ch]: ...and added here unchanged. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: remove gimp_menus_create_branch() and all related stuff. * app/actions/plug-in-actions.[ch]: connect to the plug-in-manager's "menu-path-added" signal and create menu branch actions accordingly. * app/plug-in/plug-in-context.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c * app/plug-in/plug-in-run.[ch] * app/plug-in/plug-in.[ch] * app/app_procs.c * app/actions/file-commands.c * app/actions/plug-in-commands.c * app/core/gimpimage.c * app/dialogs/file-open-location-dialog.c * app/dialogs/file-save-dialog.c * app/file/file-open.c * app/gui/gui.c * app/menus/plug-in-menus.c * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/widgets/gimpdnd-xds.c * app/widgets/gimpfiledialog.c * app/widgets/gimpfileprocview.c * app/widgets/gimphelp.c * app/widgets/gimpthumbbox.c * app/xcf/xcf.c * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: follow above refactoring. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/procedural_db_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-04-29 06:26:51 +08:00
gimp_free_progress (plug_in->manager->gimp, proc_frame->progress);
g_clear_object (&proc_frame->progress);
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.
2005-09-10 02:07:31 +08:00
}
}
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.
2005-09-10 02:07:31 +08:00
}
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.
2005-09-10 02:07:31 +08:00
void
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_set_text (GimpPlugIn *plug_in,
const gchar *message)
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.
2005-09-10 02:07:31 +08:00
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
GimpPlugInProcFrame *proc_frame;
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.
2005-09-10 02:07:31 +08:00
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_if_fail (GIMP_IS_PLUG_IN (plug_in));
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.
2005-09-10 02:07:31 +08:00
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
proc_frame = gimp_plug_in_get_proc_frame (plug_in);
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.
2005-09-10 02:07:31 +08:00
if (proc_frame->progress)
gimp_progress_set_text_literal (proc_frame->progress, message);
1997-11-25 06:05:25 +08:00
}
void
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_set_value (GimpPlugIn *plug_in,
gdouble percentage)
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
GimpPlugInProcFrame *proc_frame;
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_if_fail (GIMP_IS_PLUG_IN (plug_in));
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
proc_frame = gimp_plug_in_get_proc_frame (plug_in);
if (! proc_frame->progress ||
! gimp_progress_is_active (proc_frame->progress) ||
! proc_frame->progress_cancel_id)
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_start (plug_in, NULL, NULL);
}
if (proc_frame->progress && gimp_progress_is_active (proc_frame->progress))
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.
2005-09-10 02:07:31 +08:00
gimp_progress_set_value (proc_frame->progress, percentage);
}
void
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_pulse (GimpPlugIn *plug_in)
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
GimpPlugInProcFrame *proc_frame;
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_if_fail (GIMP_IS_PLUG_IN (plug_in));
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
proc_frame = gimp_plug_in_get_proc_frame (plug_in);
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.
2005-09-10 02:07:31 +08:00
if (! proc_frame->progress ||
! gimp_progress_is_active (proc_frame->progress) ||
! proc_frame->progress_cancel_id)
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_start (plug_in, NULL, NULL);
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.
2005-09-10 02:07:31 +08:00
}
if (proc_frame->progress && gimp_progress_is_active (proc_frame->progress))
gimp_progress_pulse (proc_frame->progress);
}
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.
2005-09-10 02:07:31 +08:00
guint32
gimp_plug_in_progress_get_window_id (GimpPlugIn *plug_in)
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
GimpPlugInProcFrame *proc_frame;
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_val_if_fail (GIMP_IS_PLUG_IN (plug_in), 0);
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
proc_frame = gimp_plug_in_get_proc_frame (plug_in);
if (proc_frame->progress)
return gimp_progress_get_window_id (proc_frame->progress);
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.
2005-09-10 02:07:31 +08:00
return 0;
badly chopped into the new files below. Pass around much more "PlugIn" and 2002-03-20 Michael Natterer <mitch@gimp.org> * app/plug-in/plug-in.[ch]: badly chopped into the new files below. Pass around much more "PlugIn" and "Gimp" pointers instead of using "current_plug_in" and "the_gimp". Needs much more hacking though... :( * app/plug-in/Makefile.am * app/plug-in/plug-in-def.[ch] * app/plug-in/plug-in-params.[ch] * app/plug-in/plug-in-progress.[ch] * app/plug-in/plug-ins.[ch]: new files. * app/gui/Makefile.am * app/gui/plug-in-commands.[ch] * app/gui/plug-in-menus.[ch]: ditto. * app/plug-in/plug-in-rc.c * app/plug-in/plug-in-types.h: changed accordingly. * app/pdb/procedural_db.c: changed procedural_db_destroy_args() so it can be used from plug_in_args_destroy(). Fixed a parasite memory leak (or introduced a new SEGV, we'll see...). * app/display/Makefile.am: another "truly ugly hack" until the plug-in menu stuff is chopped even more... * app/gui/commands.[ch]: removed filters_repeat_cmd_callback() here, it is now in plug-in-commands.[ch]. * app/widgets/gimpitemfactory.[ch]: removed all gimp_menu_item_*() hacks. We have a GimpItemFactory available in most cases we used to call this functions, and can use gimp_item_factors_from_path() in all other cases. The item factory stuff needs more work anyway... * app/app_procs.c * app/gimphelp.c * app/display/gimpdisplayshell.c * app/gui/file-dialog-utils.c * app/gui/file-open-dialog.[ch] * app/gui/file-save-dialog.[ch] * app/gui/gui.c * app/gui/menus.c * app/gui/paths-dialog.c * app/xcf/xcf.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/plug_in.pdb: changed accordingly (includes, renamed functions and gimp_menu_item_*() removal). * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/plug_in_cmds.c: regenerated.
2002-03-21 01:46:13 +08:00
}
gboolean
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_install (GimpPlugIn *plug_in,
const gchar *progress_callback)
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
GimpPlugInProcFrame *proc_frame;
GimpProcedure *procedure;
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_val_if_fail (GIMP_IS_PLUG_IN (plug_in), FALSE);
g_return_val_if_fail (progress_callback != NULL, FALSE);
app/plug-in/Makefile.am app/plug-in/plug-in-types.h new object which keeps 2006-04-29 Michael Natterer <mitch@gimp.org> * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager.[ch]: new object which keeps all plug-in related stuff that was kept in the Gimp instance. Has "menu-branch-added" and "last-plug-in-changed" signals. * app/plug-in/plug-ins.[ch]: removed, all its functions are in GimpPlugInManager now. * app/core/gimpmarshal.list: new marshaller for the new object. * app/core/gimp.[ch]: removed all plug-in related stuff and keep a GimpPlugInManager around. * app/plug-in/plug-in-data.[ch] * app/plug-in/plug-in-file.[ch] * app/plug-in/plug-in-help-domain.[ch] * app/plug-in/plug-in-locale-domain.[ch] * app/plug-in/plug-in-menu-branch.[ch] * app/plug-in/plug-ins-query.[ch]: removed... * app/plug-in/gimppluginmanager-data.[ch] * app/plug-in/gimppluginmanager-file.[ch] * app/plug-in/gimppluginmanager-help-domain.[ch] * app/plug-in/gimppluginmanager-locale-domain.[ch] * app/plug-in/gimppluginmanager-menu-branch.[ch] * app/plug-in/gimppluginmanager-query.[ch]: ...and added as methods of GimpPlugInManager. * app/plug-in/plug-in-debug.[ch] * app/plug-in/plug-in-shm.[ch]: removed... * app/plug-in/gimpplugindebug.[ch] * app/plug-in/gimppluginshm.[ch]: ...and added as properly namespeced structs with constructors and destructors. * app/core/Makefile.am * app/core/gimpenvirontable.[ch] * app/core/gimpinterpreterdb.[ch]: removed... * app/plug-in/gimpenvirontable.[ch] * app/plug-in/gimpinterpreterdb.[ch]: ...and added here unchanged. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: remove gimp_menus_create_branch() and all related stuff. * app/actions/plug-in-actions.[ch]: connect to the plug-in-manager's "menu-path-added" signal and create menu branch actions accordingly. * app/plug-in/plug-in-context.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c * app/plug-in/plug-in-run.[ch] * app/plug-in/plug-in.[ch] * app/app_procs.c * app/actions/file-commands.c * app/actions/plug-in-commands.c * app/core/gimpimage.c * app/dialogs/file-open-location-dialog.c * app/dialogs/file-save-dialog.c * app/file/file-open.c * app/gui/gui.c * app/menus/plug-in-menus.c * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/widgets/gimpdnd-xds.c * app/widgets/gimpfiledialog.c * app/widgets/gimpfileprocview.c * app/widgets/gimphelp.c * app/widgets/gimpthumbbox.c * app/xcf/xcf.c * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: follow above refactoring. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/procedural_db_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-04-29 06:26:51 +08:00
procedure = gimp_pdb_lookup_procedure (plug_in->manager->gimp->pdb,
app/pdb/Makefile.am app/pdb/pdb-types.h new object GimpPDB which keeps all 2006-04-26 Michael Natterer <mitch@gimp.org> * app/pdb/Makefile.am * app/pdb/pdb-types.h * app/pdb/gimppdb.[ch]: new object GimpPDB which keeps all procedures and functions to register and run them. Renamed all functions and did some cleanups. * app/pdb/gimp-pdb.[ch] * app/core/gimp.[ch]: removed the same stuff here. * app/pdb/gimp-pdb-query.[ch]: removed these files... * app/pdb/gimppdb-query.[ch]: ...added here as members of GimpPDB. * app/pdb/gimp-pdb-compat.h: fix include guard. * app/batch.c * app/actions/vectors-commands.c * app/dialogs/about-dialog.c * app/file/file-open.c * app/file/file-save.c * app/plug-in/plug-in-message.c * app/plug-in/plug-ins.c * app/widgets/gimpfiledialog.c * app/widgets/gimphelp.c * app/xcf/xcf.c * tools/pdbgen/pdb/brush_select.pdb * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/font_select.pdb * tools/pdbgen/pdb/gradient_select.pdb * tools/pdbgen/pdb/palette_select.pdb * tools/pdbgen/pdb/pattern_select.pdb * tools/pdbgen/pdb/procedural_db.pdb: changed includes and function calls accordingly. * tools/pdbgen/app.pl: pass around GimpPDB instead of Gimp pointers to register the internal procedures with. Changed some newlines in the generated code. * app/pdb/*_cmds.c * app/pdb/internal_procs.[ch]: regenerated. * app/core/gimppdbprogress.[ch] * app/widgets/gimppdbdialog.[ch]: added "pdb" CONSTRUCT_ONLY properties. * app/plug-in/plug-in-progress.c * app/gui/gui-vtable.c: pass gimp->pdb when creating them. * app/widgets/gimpbrushselect.c * app/widgets/gimpfontselect.c * app/widgets/gimpgradientselect.c * app/widgets/gimppaletteselect.c * app/widgets/gimppatternselect.c: use the new local pdb pointers instead of some foo->bar->gimp->pdb overkill.
2006-04-26 17:13:47 +08:00
progress_callback);
app/plug-in/Makefile.am app/plug-in/plug-in-types.h removed... 2006-04-06 Michael Natterer <mitch@gimp.org> * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/plug-in-proc-def.[ch]: removed... * app/pdb/Makefile.am * app/pdb/pdb-types.h * app/pdb/gimppluginprocedure.[ch]: ...and added here. Virtualized get_progname(). * app/pdb/gimptemporaryprocedure.[ch]: new class derived from GimpPlugInProcedure. * app/pdb/gimpprocedure.[ch] (struct GimpProcedure): remove union exec_method and all the structs it needed. Procedure execution is properly virtualized now. Removed gimp_procedure_initialize() and grow the args and values arrays dynamically in gimp_procedure_add_argument()/return_value(). Added marshal_func parameter to gimp_procedure_new(). * app/actions/plug-in-actions.c * app/actions/plug-in-commands.c * app/core/gimp-gui.c * app/dialogs/file-save-dialog.c * app/file/file-open.c * app/file/file-save.c * app/file/file-utils.c * app/gui/gui-vtable.c * app/menus/plug-in-menus.c * app/plug-in/plug-in-def.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c * app/plug-in/plug-in-rc.c * app/plug-in/plug-in-run.c * app/plug-in/plug-in.c * app/plug-in/plug-ins-query.c * app/plug-in/plug-ins.c * app/widgets/gimpfiledialog.c * app/widgets/gimpfileprocview.c * app/widgets/gimppluginaction.c * app/xcf/xcf.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/app.pl: changed accordingly. * app/pdb/*_cmds.c: regenerated. * app/pdb/gimp-pdb.c: added uglyness to make the app link again.
2006-04-06 18:01:30 +08:00
if (! GIMP_IS_TEMPORARY_PROCEDURE (procedure) ||
GIMP_TEMPORARY_PROCEDURE (procedure)->plug_in != plug_in ||
procedure->num_args != 3 ||
! GIMP_IS_PARAM_SPEC_INT32 (procedure->args[0]) ||
! G_IS_PARAM_SPEC_STRING (procedure->args[1]) ||
! G_IS_PARAM_SPEC_DOUBLE (procedure->args[2]))
{
return FALSE;
}
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
proc_frame = gimp_plug_in_get_proc_frame (plug_in);
if (proc_frame->progress)
{
gimp_plug_in_progress_end (plug_in, proc_frame);
g_clear_object (&proc_frame->progress);
}
proc_frame->progress = g_object_new (GIMP_TYPE_PDB_PROGRESS,
app/plug-in/Makefile.am app/plug-in/plug-in-types.h new object which keeps 2006-04-29 Michael Natterer <mitch@gimp.org> * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager.[ch]: new object which keeps all plug-in related stuff that was kept in the Gimp instance. Has "menu-branch-added" and "last-plug-in-changed" signals. * app/plug-in/plug-ins.[ch]: removed, all its functions are in GimpPlugInManager now. * app/core/gimpmarshal.list: new marshaller for the new object. * app/core/gimp.[ch]: removed all plug-in related stuff and keep a GimpPlugInManager around. * app/plug-in/plug-in-data.[ch] * app/plug-in/plug-in-file.[ch] * app/plug-in/plug-in-help-domain.[ch] * app/plug-in/plug-in-locale-domain.[ch] * app/plug-in/plug-in-menu-branch.[ch] * app/plug-in/plug-ins-query.[ch]: removed... * app/plug-in/gimppluginmanager-data.[ch] * app/plug-in/gimppluginmanager-file.[ch] * app/plug-in/gimppluginmanager-help-domain.[ch] * app/plug-in/gimppluginmanager-locale-domain.[ch] * app/plug-in/gimppluginmanager-menu-branch.[ch] * app/plug-in/gimppluginmanager-query.[ch]: ...and added as methods of GimpPlugInManager. * app/plug-in/plug-in-debug.[ch] * app/plug-in/plug-in-shm.[ch]: removed... * app/plug-in/gimpplugindebug.[ch] * app/plug-in/gimppluginshm.[ch]: ...and added as properly namespeced structs with constructors and destructors. * app/core/Makefile.am * app/core/gimpenvirontable.[ch] * app/core/gimpinterpreterdb.[ch]: removed... * app/plug-in/gimpenvirontable.[ch] * app/plug-in/gimpinterpreterdb.[ch]: ...and added here unchanged. * app/core/gimp-gui.[ch] * app/gui/gui-vtable.c: remove gimp_menus_create_branch() and all related stuff. * app/actions/plug-in-actions.[ch]: connect to the plug-in-manager's "menu-path-added" signal and create menu branch actions accordingly. * app/plug-in/plug-in-context.c * app/plug-in/plug-in-message.c * app/plug-in/plug-in-progress.c * app/plug-in/plug-in-run.[ch] * app/plug-in/plug-in.[ch] * app/app_procs.c * app/actions/file-commands.c * app/actions/plug-in-commands.c * app/core/gimpimage.c * app/dialogs/file-open-location-dialog.c * app/dialogs/file-save-dialog.c * app/file/file-open.c * app/gui/gui.c * app/menus/plug-in-menus.c * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/widgets/gimpdnd-xds.c * app/widgets/gimpfiledialog.c * app/widgets/gimpfileprocview.c * app/widgets/gimphelp.c * app/widgets/gimpthumbbox.c * app/xcf/xcf.c * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/procedural_db.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: follow above refactoring. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/procedural_db_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-04-29 06:26:51 +08:00
"pdb", plug_in->manager->gimp->pdb,
"context", proc_frame->main_context,
"callback-name", progress_callback,
NULL);
gimp_plug_in_progress_attach (proc_frame->progress);
return TRUE;
}
gboolean
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_uninstall (GimpPlugIn *plug_in,
const gchar *progress_callback)
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
GimpPlugInProcFrame *proc_frame;
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_val_if_fail (GIMP_IS_PLUG_IN (plug_in), FALSE);
g_return_val_if_fail (progress_callback != NULL, FALSE);
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
proc_frame = gimp_plug_in_get_proc_frame (plug_in);
if (GIMP_IS_PDB_PROGRESS (proc_frame->progress))
{
gimp_plug_in_progress_end (plug_in, proc_frame);
g_clear_object (&proc_frame->progress);
return TRUE;
}
return FALSE;
}
gboolean
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_cancel (GimpPlugIn *plug_in,
const gchar *progress_callback)
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
g_return_val_if_fail (GIMP_IS_PLUG_IN (plug_in), FALSE);
g_return_val_if_fail (progress_callback != NULL, FALSE);
return FALSE;
}
badly chopped into the new files below. Pass around much more "PlugIn" and 2002-03-20 Michael Natterer <mitch@gimp.org> * app/plug-in/plug-in.[ch]: badly chopped into the new files below. Pass around much more "PlugIn" and "Gimp" pointers instead of using "current_plug_in" and "the_gimp". Needs much more hacking though... :( * app/plug-in/Makefile.am * app/plug-in/plug-in-def.[ch] * app/plug-in/plug-in-params.[ch] * app/plug-in/plug-in-progress.[ch] * app/plug-in/plug-ins.[ch]: new files. * app/gui/Makefile.am * app/gui/plug-in-commands.[ch] * app/gui/plug-in-menus.[ch]: ditto. * app/plug-in/plug-in-rc.c * app/plug-in/plug-in-types.h: changed accordingly. * app/pdb/procedural_db.c: changed procedural_db_destroy_args() so it can be used from plug_in_args_destroy(). Fixed a parasite memory leak (or introduced a new SEGV, we'll see...). * app/display/Makefile.am: another "truly ugly hack" until the plug-in menu stuff is chopped even more... * app/gui/commands.[ch]: removed filters_repeat_cmd_callback() here, it is now in plug-in-commands.[ch]. * app/widgets/gimpitemfactory.[ch]: removed all gimp_menu_item_*() hacks. We have a GimpItemFactory available in most cases we used to call this functions, and can use gimp_item_factors_from_path() in all other cases. The item factory stuff needs more work anyway... * app/app_procs.c * app/gimphelp.c * app/display/gimpdisplayshell.c * app/gui/file-dialog-utils.c * app/gui/file-open-dialog.[ch] * app/gui/file-save-dialog.[ch] * app/gui/gui.c * app/gui/menus.c * app/gui/paths-dialog.c * app/xcf/xcf.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/plug_in.pdb: changed accordingly (includes, renamed functions and gimp_menu_item_*() removal). * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/plug_in_cmds.c: regenerated.
2002-03-21 01:46:13 +08:00
/* private functions */
static GimpValueArray *
get_cancel_return_values (GimpProcedure *procedure)
{
GimpValueArray *return_vals;
GError *error;
error = g_error_new_literal (GIMP_PDB_ERROR, GIMP_PDB_ERROR_CANCELLED,
_("Cancelled"));
return_vals = gimp_procedure_get_return_values (procedure, FALSE, error);
g_error_free (error);
return return_vals;
}
badly chopped into the new files below. Pass around much more "PlugIn" and 2002-03-20 Michael Natterer <mitch@gimp.org> * app/plug-in/plug-in.[ch]: badly chopped into the new files below. Pass around much more "PlugIn" and "Gimp" pointers instead of using "current_plug_in" and "the_gimp". Needs much more hacking though... :( * app/plug-in/Makefile.am * app/plug-in/plug-in-def.[ch] * app/plug-in/plug-in-params.[ch] * app/plug-in/plug-in-progress.[ch] * app/plug-in/plug-ins.[ch]: new files. * app/gui/Makefile.am * app/gui/plug-in-commands.[ch] * app/gui/plug-in-menus.[ch]: ditto. * app/plug-in/plug-in-rc.c * app/plug-in/plug-in-types.h: changed accordingly. * app/pdb/procedural_db.c: changed procedural_db_destroy_args() so it can be used from plug_in_args_destroy(). Fixed a parasite memory leak (or introduced a new SEGV, we'll see...). * app/display/Makefile.am: another "truly ugly hack" until the plug-in menu stuff is chopped even more... * app/gui/commands.[ch]: removed filters_repeat_cmd_callback() here, it is now in plug-in-commands.[ch]. * app/widgets/gimpitemfactory.[ch]: removed all gimp_menu_item_*() hacks. We have a GimpItemFactory available in most cases we used to call this functions, and can use gimp_item_factors_from_path() in all other cases. The item factory stuff needs more work anyway... * app/app_procs.c * app/gimphelp.c * app/display/gimpdisplayshell.c * app/gui/file-dialog-utils.c * app/gui/file-open-dialog.[ch] * app/gui/file-save-dialog.[ch] * app/gui/gui.c * app/gui/menus.c * app/gui/paths-dialog.c * app/xcf/xcf.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/plug_in.pdb: changed accordingly (includes, renamed functions and gimp_menu_item_*() removal). * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/plug_in_cmds.c: regenerated.
2002-03-21 01:46:13 +08:00
static void
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_progress_cancel_callback (GimpProgress *progress,
GimpPlugIn *plug_in)
badly chopped into the new files below. Pass around much more "PlugIn" and 2002-03-20 Michael Natterer <mitch@gimp.org> * app/plug-in/plug-in.[ch]: badly chopped into the new files below. Pass around much more "PlugIn" and "Gimp" pointers instead of using "current_plug_in" and "the_gimp". Needs much more hacking though... :( * app/plug-in/Makefile.am * app/plug-in/plug-in-def.[ch] * app/plug-in/plug-in-params.[ch] * app/plug-in/plug-in-progress.[ch] * app/plug-in/plug-ins.[ch]: new files. * app/gui/Makefile.am * app/gui/plug-in-commands.[ch] * app/gui/plug-in-menus.[ch]: ditto. * app/plug-in/plug-in-rc.c * app/plug-in/plug-in-types.h: changed accordingly. * app/pdb/procedural_db.c: changed procedural_db_destroy_args() so it can be used from plug_in_args_destroy(). Fixed a parasite memory leak (or introduced a new SEGV, we'll see...). * app/display/Makefile.am: another "truly ugly hack" until the plug-in menu stuff is chopped even more... * app/gui/commands.[ch]: removed filters_repeat_cmd_callback() here, it is now in plug-in-commands.[ch]. * app/widgets/gimpitemfactory.[ch]: removed all gimp_menu_item_*() hacks. We have a GimpItemFactory available in most cases we used to call this functions, and can use gimp_item_factors_from_path() in all other cases. The item factory stuff needs more work anyway... * app/app_procs.c * app/gimphelp.c * app/display/gimpdisplayshell.c * app/gui/file-dialog-utils.c * app/gui/file-open-dialog.[ch] * app/gui/file-save-dialog.[ch] * app/gui/gui.c * app/gui/menus.c * app/gui/paths-dialog.c * app/xcf/xcf.c * tools/pdbgen/pdb/fileops.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/plug_in.pdb: changed accordingly (includes, renamed functions and gimp_menu_item_*() removal). * app/pdb/fileops_cmds.c * app/pdb/help_cmds.c * app/pdb/plug_in_cmds.c: regenerated.
2002-03-21 01:46:13 +08:00
{
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
GimpPlugInProcFrame *proc_frame = &plug_in->main_proc_frame;
GList *list;
if (proc_frame->main_loop)
{
proc_frame->return_vals =
get_cancel_return_values (proc_frame->procedure);
}
for (list = plug_in->temp_proc_frames; list; list = g_list_next (list))
removed gimp_main_loop() and gimp_main_loop_quit() because they were a 2003-02-03 Michael Natterer <mitch@gimp.org> * app/core/gimp.[ch]: removed gimp_main_loop() and gimp_main_loop_quit() because they were a temp_hack until plug-ins have their own main loops. Added gimp_threads_enter() and gimp_threads_leave() instead. * app/gui/gui.c: ditto: removed the main loop stuff and added functions which call GDK_THREADS_ENTER() and GDK_THREADS_LEAVE() instead. * app/app_procs.c: create the main GMainLoop here and use gimp_threads_enter,leave(). * app/plug-in/plug-in.[ch]: added a ref_count per plug-in so the plug-in is not destroyed under our feet while running a recursive main loop. Added plug_in_ref(). Changed plug_in_destroy() to plug_in_unref(). Don't destroy the plug-in if plug_in_open() fails. Call gimp_threads_enter,leave() around g_main_loop_run(). Changed the way plug_in_push,pop() are used: "current_plug_in" is no longer the plug-in which currently uses the wire, but the plug-in which currently preforms a PDB call (the former meaning was needed when wire callbacks had no plug-in context but needed to get the plug-in from the global "current_plug_in" variable). Removed all calls to plug_in_push,pop() from this file. * app/plug-in/plug-in-message.c (plug_in_handle_proc_run): added plug_in_push,pop() around procedural_db_execute(). No need to construct an error return value if the procedure was not found because procedural_db_execute() already does this. Removed all other plug_in_push,pop(). Added more checks to plug-in message handlers and kill the plug-in if it misbehaves. Cleanup. * app/plug-in/plug-in-progress.c (plug_in_progress_cancel): if the plug-in runs synchronously, provide a GIMP_PDB_CANCEL return value so we don't see error messages about the "failed" procedure. * app/plug-in/plug-in-run.c: removed plug_in_push,pop() stuff. Set the new plug_in->starting_ext boolean while starting an extension so the extension_ack handler knows that it wasn't called from a buggy plug-in. Cleanup. * app/plug-in/plug-ins.c: Cleanup.
2003-02-03 21:21:31 +08:00
{
proc_frame = list->data;
if (proc_frame->main_loop)
{
proc_frame->return_vals =
get_cancel_return_values (proc_frame->procedure);
}
removed gimp_main_loop() and gimp_main_loop_quit() because they were a 2003-02-03 Michael Natterer <mitch@gimp.org> * app/core/gimp.[ch]: removed gimp_main_loop() and gimp_main_loop_quit() because they were a temp_hack until plug-ins have their own main loops. Added gimp_threads_enter() and gimp_threads_leave() instead. * app/gui/gui.c: ditto: removed the main loop stuff and added functions which call GDK_THREADS_ENTER() and GDK_THREADS_LEAVE() instead. * app/app_procs.c: create the main GMainLoop here and use gimp_threads_enter,leave(). * app/plug-in/plug-in.[ch]: added a ref_count per plug-in so the plug-in is not destroyed under our feet while running a recursive main loop. Added plug_in_ref(). Changed plug_in_destroy() to plug_in_unref(). Don't destroy the plug-in if plug_in_open() fails. Call gimp_threads_enter,leave() around g_main_loop_run(). Changed the way plug_in_push,pop() are used: "current_plug_in" is no longer the plug-in which currently uses the wire, but the plug-in which currently preforms a PDB call (the former meaning was needed when wire callbacks had no plug-in context but needed to get the plug-in from the global "current_plug_in" variable). Removed all calls to plug_in_push,pop() from this file. * app/plug-in/plug-in-message.c (plug_in_handle_proc_run): added plug_in_push,pop() around procedural_db_execute(). No need to construct an error return value if the procedure was not found because procedural_db_execute() already does this. Removed all other plug_in_push,pop(). Added more checks to plug-in message handlers and kill the plug-in if it misbehaves. Cleanup. * app/plug-in/plug-in-progress.c (plug_in_progress_cancel): if the plug-in runs synchronously, provide a GIMP_PDB_CANCEL return value so we don't see error messages about the "failed" procedure. * app/plug-in/plug-in-run.c: removed plug_in_push,pop() stuff. Set the new plug_in->starting_ext boolean while starting an extension so the extension_ack handler knows that it wasn't called from a buggy plug-in. Cleanup. * app/plug-in/plug-ins.c: Cleanup.
2003-02-03 21:21:31 +08:00
}
Made an object out of the plug-in struct. Also change refcounting 2006-05-03 Michael Natterer <mitch@gimp.org> Made an object out of the plug-in struct. Also change refcounting considerably: - gimp_plug_in_open() adds a reference that is only dropped by gimp_plug_in_close(). - temporarily ref the plug-in while handling messages. - remporarily ref the plug-in while a recursive main loop is running. - each caller of gimp_plug_in_new() also unrefs the plug-in before returning, the only reference that persists across functions (that keeps the plug-in alive) is the one added by open(). * app/plug-in/plug-in.[ch] * app/plug-in/plug-in-context.[ch] * app/plug-in/plug-in-message.[ch] * app/plug-in/plug-in-progress.[ch]: removed these files... * app/plug-in/gimpplugin.[ch] * app/plug-in/gimpplugin-context.[ch] * app/plug-in/gimpplugin-message.[ch] * app/plug-in/gimpplugin-progress.[ch]: ...and added here as GObject. * app/plug-in/plug-in-proc-frame.[ch]: removed... * app/plug-in/gimppluginprocframe.[ch]: ...and added with a namespace. * app/plug-in/Makefile.am * app/plug-in/plug-in-types.h * app/plug-in/gimppluginmanager-call.c * app/plug-in/gimppluginmanager-file.c * app/plug-in/gimppluginmanager.[ch] * app/pdb/gimppluginprocedure.c * app/pdb/gimptemporaryprocedure.c * app/pdb/gimptemporaryprocedure.h * tools/pdbgen/pdb/context.pdb * tools/pdbgen/pdb/drawable.pdb * tools/pdbgen/pdb/help.pdb * tools/pdbgen/pdb/message.pdb * tools/pdbgen/pdb/plug_in.pdb * tools/pdbgen/pdb/progress.pdb * tools/pdbgen/pdb/undo.pdb: changed accordingly. * app/pdb/context_cmds.c * app/pdb/drawable_cmds.c * app/pdb/help_cmds.c * app/pdb/message_cmds.c * app/pdb/plug_in_cmds.c * app/pdb/progress_cmds.c * app/pdb/undo_cmds.c: regenerated.
2006-05-04 02:05:06 +08:00
gimp_plug_in_close (plug_in, TRUE);
}