Gimp Python 插件不需要当前打开的图像? (插件是通过 FileChooserDialog 到 Open/Export/Close 图像)

Gimp Python plugin without requiring a currently open image? (Plug is to Open/Export/Close image via FileChooserDialog)

需要处理用户可能尚未打开的图像文件。虽然看起来我只能在图像已经打开的情况下启用插件。在图像打开之前,Gimp 2.8 附带的所有 Python 插件都被禁用。通过许多示例进行搜索,似乎找到的每个示例都需要在插件执行之前已经打开图像。

这是一个基本的helloworld.py

#!/usr/bin/env python

import gtk
from gimpfu import *

def plugin_main() :

    message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
    message.set_markup("Please Help")
    message.run()
    gimp.quit()

register(
    "helloworld",
    "Saying Hi",
    "Saying Hello to the World",
    "William Crandell <william@crandell.ws>",
    "William Crandell <william@crandell.ws>",
    "2015",
    "Hello Gimp",
    "*",
    [],
    [],
    plugin_main,
    menu = "<Toolbox>/Hello/"
)

main()

这运行如何在不打开任何图像文件到 Gimp 的情况下实现?

几乎相关的问题GIMP, python-fu: How to disable "Input image" and "Input drawable"

引自http://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-4

Note that I used a Toolbox menu entry field, and emptied the source image type, this way, our plugin appears in the menu, and you can select it even if no image is opened.

重要的部分是图像类型,它是插件框架的一部分,请参阅:http://www.gimp.org/docs/python/#plugin_framework

使用 "*" 作为 'image type' 插件期望任何图像作为初始输入的一部分,这意味着当前图像(接受任何类型,因为通配符 *)将作为插件启动的一部分提供。将类型更改为 "" 相当于说在启动期间没有图像输入,因此允许插件 运行 没有当前打开的图像。

#!/usr/bin/env python

import gtk
from gimpfu import *

def plugin_main() :

    message = gtk.MessageDialog(type=gtk.MESSAGE_ERROR, buttons=gtk.BUTTONS_OK)
    message.set_markup("Thank you Frederic Jaume -> \nhttp://www.exp-media.com/content/extending-gimp-python-python-fu-plugins-part-4")
    message.run()
    gimp.quit()

register(
    "helloworld",
    "Saying Hi",
    "Saying Hello to the World",
    "William Crandell <william@crandell.ws>",
    "William Crandell <william@crandell.ws>",
    "2015",
    "Hello Gimp",
    "",
    [],
    [],
    plugin_main,
    menu = "<Toolbox>/Hello/"
)

main()