前回GIMP2.99.4をダウンロードをした、という話を書きました。Ver. 3.00に向けた開発バージョンです。既存のプラグインがどれぐらい動くかというのを確認しようとダウンロードしたのですが、2.10対応のプラグインは全滅です。
Python3ベースになる、ということとGTK3ベースになる、また廃止予定とされていたprocedureは使えない、ということは分かっていましたが、どうやら仕様変更はそれにとどまらないようです。リリースノートを見ると、プラグインはクラスとして宣言しなければならないと書いています。
GIMP2.99にサンプルプログラムとしてgoat-exercise-py3というのが付属していますが、既存のプラグインと全く違います。
頭の方に以下のようなコードがあります。
class Goat (Gimp.PlugIn):
## GimpPlugIn virtual methods ##
def do_query_procedures(self):
# Localization for the menu entries. It has to be called in the
# query function only.
self.set_translation_domain(textdomain,
Gio.file_new_for_path(Gimp.locale_directory()))
return [ "plug-in-goat-exercise-python" ]
def do_create_procedure(self, name):
procedure = Gimp.ImageProcedure.new(self, name,
Gimp.PDBProcType.PLUGIN,
self.run, None)
procedure.set_image_types("*")
procedure.set_menu_label(N_("Exercise a goat and a python"))
procedure.set_icon_name(GimpUi.ICON_GEGL)
procedure.add_menu_path('<Image>/Filters/Development/Goat exercises/')
procedure.set_documentation(N_("Exercise a goat in the Python 3 language"),
N_("Takes a goat for a walk in Python 3"),
name)
procedure.set_attribution("Jehan", "Jehan", "2019")
return procedure
どうもこの部分が今までのプラグインのRegister情報に相当するようです。しかし全く違います。
その後もprocedureを呼び出しているらしいコードが見当たらず... 良く分かりません。
また、ユーザに入力ダイアログを表示させるのも今までのプラグインだとRegister部分に記述していましたが、GTKを呼び出していちいちダイアログの定義を書いて作っているようです。ダイアログの自由度は高まりますが、プログラムの難易度も上がります。
要はかなり全面的に書き換えないと走りそうにありません。参りました。ようやく2.10用のプラグインの書き方の要領も分かってきたというところで、またお勉強をし直さないといけなさそうです。
あと、プラグインは直接Pluginディレクトリに入れるとダメで、必ずそのプラグイン専用のサブディレクトリを掘り、その下に入れないといけないようです。
現状のGIMP2.99は、ファイルをエクスポートに掛けるだけでプラグインがクラッシュするなどかなり不安定で、3.0が出るまで1年ぐらいは少なくともかかりそうな気がしますので、その間に準備をすればよいのかもしれませんが...
3.0へのバージョンアップについていけず消えるプラグインもかなり出そうです。あるいは、2.10を継続して使うか...
現状のところ、サンプル事例も極めて少なく2.99に向けたプラグインをどう書いたら良いかチュートリアル情報もないような状況なので、すぐさま3.0へ向けた準備に入れそうもありません。プラグイン周りの仕様も固まっていないのかもしれません。しばらく様子見です。
一応以下に、GIMP3における変更点情報が不完全ながらあるようです。
https://gitlab.gnome.org/GNOME/gimp/-/tree/master/devel-docs/GIMP3-plug-in-porting-guide