2018年7月18日水曜日

GIMP Script-Py (2) 新規画像作成時 改定版 1

GIMP Script-Py (2) 新規画像作成時 と言う投稿を嘗て書きました。
しかし、 脆くも、もう、 この書き方は 問題あり! に変り果てようとしています。
はい。  GIMP 2.10.4 Windows x64 版 で見付かった 問題に対してのご対応が、
<Toolbox> 利用の廃止! に繋がった からです。


GitLab に Bug 報告した 張本人 (私 ShiroYuki_Mot) が書くのも何ですが、
この様な結末を招くとは思っていませんでした。

あら、まぁ ... !。  が、正直な感想です。

その辺りの事実関係は、 GIMP Script-Py (番外) <Toolbox> に関して に記載しました。
<Toolbox> 利用の廃止! が結論です。
大昔の遺産であった<Toolbox> を使うと不都合が生じる様になって来たと言うのが、その背景にあります。.

これを使って書いていた GIMP Script-Py (2) 新規画像作成時 も使えなくなった訳です。
書き直さないと。
いいえ、 別の手段を講じないと ですね。


それでは、 やっと、 本題 です。
メニュー登録に、 <Toolbox> を止めて、 <Image> から書き出す方法です。

大抵のスクリプトは、 画像依存 で書かれると思います。
そう、 今、開いている画像やレイヤーを対象に処理を行うのですね。
この場合、 メニューとして登録する場所は <Image> から書き出します。

でも、
画像を開いていなかったり、 開いている画像とは別に、 新たな画像を生成するスクリプトもある訳です。
そんなケースでの 書き方 になります。

スクリプトを登録する命令文 register の 通常使われない機能 を使いましょう。
メニュー登録に絡む 引数 が 実は ふたつ あります。
ふたつ目は 省略可能なので、 普通に書いている分には ひとつ しかない と思われているかも知れません。
引数の7番目 と 12番目 とになります。

通常は、7番目に <Image> から始まる 階層を含んだ 名称 を指定している筈です。
所謂、 メニュー項目のフルパス指定 ですね。
この場合、 GIMP (Python) は 定義された命令文の引数等を精査して、
必要であれば補完したり、 命令文の間違いを拾い上げて中断したりしています。
この補完によって、
新規画像で、image や drawable (layer) の 引数が必要で無い場合にも、
スクリプトの表示するダイアログには これらの選択項目が表示されてしまいます。

そこで、
メニュー項目のフルパス指定  を分解して、
場所を示すパス部分と 項目名称と に2分割します。
7番目の引数に 項目名称 のみ記述し、
12番目の引数に 'menu="<場所を示すパス部分>"'  と記述します。

  例: <Image>/Script-Py/Test/MyScript が名称を含むフルパスなら、
     "MyScript" と、 menu="<Image>/Script-Py/Test/" と分けるのです。
     通常の11項目にひとつ追加ですから、11項目の最後に , の追加をお忘れなく!。

  参考: 同じ様に、通常は省略されている引数に Help 絡みになる domain= の指定もあります。
         既投稿を参照: GIMP Script's Help Content


この様に、分割して書いた場合には、自動補完の機能は働かずに、すっきりした意図通りのダイアログが現れます。



0 件のコメント:

コメントを投稿