EDITED HEAVILY with some new information (and a bounty)
I am trying to create a plug in in python for gimp. (on windows) this page http://gimpbook.com/scripting/notes.ht
1- can i refresh a plugin without restarting gimp ? (so at least my slow-morph will be faster )
You must restart GIMP when you add a script or change register(). No need to restart when changing other parts of the script -- it runs as a separate process and will be re-read from disk each time.
helpful source: http://gimpbook.com/scripting/notes.html
2- can i run plug-ins from the python-fu shell. (as opposed to just importing them to make sure they parse.)
Yes, you can access to your registered plug-in in python-fu
console as:
>>> pdb.name_of_registerd_plug-in
And can call it like:
>>> pdb.name_of_registerd_plug-in(img, arg1, arg2, ...)
Also in python-fu
dialog console, you can click to Browse ..
option and find your registered plug-in,
and then click Apply
, to import it to python-fu
console.
helpful source: http://registry.gimp.org/node/28434
3- is there an error-log i am missing, or something to that effect?
To log, you can define a function like this:
def gimp_log(text):
pdb.gimp_message(text)
And use it in your code, whenever you want.
To see log of that, in gimp
program, open Error Console
from Dockable Dialogs
in Windows
menu, otherwise a message box will be pop up on every time you make a log.
Also you can redirect stdin
and stdout
to a file,:
import sys
sys.stderr = open('er.txt', 'a')
sys.stdout = open('log.txt', 'a')
When you do that, all of exceptions
will go to err.txt
and all of print out will be go to log.txt
Note that open file with a
option instead of w
to keep log file.
helpful sources:
How do I output info to the console in a Gimp python script?
http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-2
4- is there a way to run gimp on windows from a shell to see output ? (am i better off under cygwin (or virtualbox.. ))?
I got some error for that, but may try again ...
5- i haven't yet looked up how to connect winpdb to an existing process. how would i go about connecting it to a python process that runs inside gimp?
First install winpdb , and also wxPython ( Winpdb GUI depends on wxPython)
Note that Gimp
has own python interpreter, and may you want to install winpdb
to your default python interpreter or to gimp python interpreter.
If you install winpdb
to your default python interpreter, then you need to copy rpdb2.py
installed file to ..\Lib\site-packages
of gimp python interpreter path.
After that you should be able to import pdb2
module from Python-Fu
console of gimp:
GIMP 2.8.10 Python Console
Python 2.7.5 (default, May 15 2013, 22:43:36) [MSC v.1500 32 bit (Intel)]
>>> import rpdb2
>>>
Now in your plug-in code, for example in your main function add following code:
import rpdb2 # may be included out side of function.
rpdb2.start_embedded_debugger("pass") # a password that will asked by winpdb
Next, go to gimp and run your python plug-in, when you run your plug-in, it will run and then wait when reach to above code.
Now to open Winpdb GUI
go to ..\PythonXX\Scripts
and run winpdb_.pyw
.
(Note that when using Winpdb for remote debugging make sure any firewall on the way has TCP port 51000 open. Note that if port 51000 is taken Winpdb will search for an alternative port between 51000 and 51023.)
Then in Winpdb GUI
from File
menu select attach
and give pass
as password to it, and then you can see your plug-in script on that list, select it and start your debug step by step.
helpful resource: Installing PyGIMP on Windows
Useful sources:
http://wiki.gimp.org/index.php/Hacking:Plugins
http://www.gimp.org/docs/python/index.html
http://wiki.elvanor.net/index.php/GIMP_Scripting
http://www.exp-media.com/gimp-python-tutorial
http://coderazzi.net/python/gimp/pythonfu.html
http://www.ibm.com/developerworks/opensource/library/os-autogimp/os-autogimp-pdf.pdf