Nachdem ich mein erstes, bescheidenes Plugin geschrieben hatte, sties ich auf den Beitrag "
Plugins in Python - und zwar richtig" und fand die Infos echt super. Habe nach Vorlagen bisher scheinbar ein "python-fu"-Plugin programmiert. Der vorgestellte Rahmen scheint einfach logischer zu sein. Da ich bisher meine Oberflächen mit GTK (import gtk) gestaltet habe, versuchte ich gleich, der Empfehlung folgend mit PyGTK zu arbeiten. Leider ohne Erfolg, da im meiner aktuellen GIMP-Installation 2.10.8 PyGTK nicht vorhanden ist (Fehlermeldung bei "import gi": ImporttError: No module named gi). Quelle:
Code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
"""
Zweck: Empfohlener Rahmen, fuer ein "echtes", nicht "gimpfu" Python-Plugin.
Quelle: http://www.gimpforum.de/showthread.php?t=9287
Author: Michael Schumacher, Herbert Nemeczek
Aufruf: Filter -> HN: Python-Plugin *Real* Python
Datum: 14.01.2019
"""
import gimp, gimpplugin
from gimpenums import *
pdb = gimp.pdb
import gi
gi.require_version("Gtk", "3.0")
from gi.repository import Gtk
class minimalplugin(gimpplugin.plugin):
def start(self):
gimp.main(self.init, self.quit, self.query, self._run)
def init(self):
pass
def quit(self):
pass
def query(self):
gimp.install_procedure(
"HN_Python_Plugin_echtes",
"This is a minimal *real*, non-gimpfu python plugin",
"", "Michael Schumacher", "Michael Schumacher", "2007",
"<Toolbox>/Erweiterungen/HN: Python-Plugin *Real* Python",
"", PLUGIN,
[ (PDB_INT32, "run_mode", "Run mode") ], []
)
def HN_Python_Plugin_echtes(self, fRunMode):
window = Gtk.Window(title="Hello World")
window.show()
window.connect("destroy", Gtk.main_quit)
Gtk.main()
if __name__ == '__main__':
minimalplugin().start()
Deshalb habe ich noch folgende Fragen an einen Spezialisten:
- Was unterscheidet ein "*Real*"-Plugin von einem "python-fu"-Plugin?
- Wo finde ich Beschreibungen zu den Methoden wie beispielsweise "gimp.main()" oder "gimp.install_procedure()"?
- Mir ist aufgefallen, dass viele Beispiele für "python-fu"-Plugins zu finden sind, aber fast keine "*Real*"-Plugins. Suche ich nicht an richtiger Stelle, oder programmieren alle "python-fu"-Plugins?
- Wie finde ich heraus, welche Module mit der aktuellen GIMP-Version 2.10.8 installiert wurden.
- Für das Plugin wird immer eine Fenster-Oberfläche benötigt. Am Besten wäre es doch, eine Oberfläche zu verwenden, die mit der aktuellen GIMP-Version mit installiert wurde. Wie wird das normalerweise gehandhabt? Wie ist Eure Meinung dazu? Welche Oberfläche empfiehlst Ihr?
Für Eure Hilfe wäre ich sehr dankbar!