Re: "Cancel" function and plugins

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 6/7/06, Toby Speight <T.M.Speight.90@xxxxxxxxxx> wrote:
(Delurk: I'm a sporadic developer of plugins, some of which are almost
good enough to shove in the registry, and I've watched this list for a
few months)

One of my current projects is a multifrequency blend tool (inspired
by, but not based on, the enblend program), and as part of its
operation, it invokes a couple of other plugins (I don't see the point
in reinventing wheels!).

One thing that's not covered in any of the "how to write a plugin"
guides is how to poll for cancel.  Of course, the plugin could have
its own cancel button, but then the user would have to know which
sub-plugin is running and find the correct cancel button!  (I'm happy
to deal with the call to the sub-plugin returning GIMP_PDB_CANCEL).

So - how does a plugin poll the Gimp's cancel button?  I couldn't find
any examples in the src/plug-ins directory...

"Cancelling" a plugin kills it unconditionally.  It's been a few
months since I looked at that code, but I'm fairly sure that there is
no way for a plug-in to catch that it's been cancelled.

You really should check the value of each pdb call you make and make
sure that the return value is GIMP_PDB_SUCCESS.  There is almost
certainly code out there that doesn't check the return value and just
assumes nothing wrong happened, but that doesn't mean it's the right
thing to do. :)

Which gives me an idea for a simple macro that causes the function to
return GIMP_EXECUTION_ERROR when given an error status, and does
nothing otherwise.

Rockwalrus
_______________________________________________
Gimp-developer mailing list
Gimp-developer@xxxxxxxxxxxxxxxxxxxxxx
https://lists.XCF.Berkeley.EDU/mailman/listinfo/gimp-developer

[Index of Archives]     [Video For Linux]     [Photo]     [Yosemite News]     [gtk]     [GIMP for Windows]     [KDE]     [GEGL]     [Gimp's Home]     [Gimp on GUI]     [Gimp on Windows]     [Steve's Art]

  Powered by Linux