2021年8月8日日曜日

GIMP Script-Fu(14) GIMP 3.0 が来る前にやらなければいけない事 追補

GIMP Script-Fu(14) GIMP 3.0 が来る前にやらなければいけない事 から、早2年!。
GIMP 3.0 の 前哨戦 2.99.x も続々とリリースされ、
Script-Fu の 概要 が見えて来ました。
登録記述方法 以外にも 色々と ... ね。


先ずは、復習して置きますか。
詳細や経緯は GIMP Script-Fu(14) GIMP 3.0 が来る前にやらなければいけない事 参照。
(script-fu-register ~ と、(script-fu-menu-register ~ と、ふたつの定義が必要。
Menu 絡みでは、
(script-fu-register ~ では メニュー表示名 のみを、
(script-fu-menu-register ~ では メニューでの場所(階層 or パス)を、
でしたね。


其れ以外にも、変更必要箇所が 複数 あるのです。


GIMP API (平たく言えば、呼び出す関数名 Procedure/Function Name)が 2 から 3 に変わるのを受け、
Procedure が 淘汰整理 される事。
deprecated 非推奨 と明記され、暫定的に許容されていた 旧来のもの が、消去され、
結果、 Error となる事です。

言い換えれば、複数の記述方法があったものが、正規のものに統一される、と。
その数、現在、200項目以上。
具体的には、以下の URL の removed_functions.md をご覧下さい。(英語)
https://gitlab.gnome.org/GNOME/gimp/-/tree/master/devel-docs/GIMP3-plug-in-porting-guide

内部的に数値で処理されるものを分かり易い形にする Enum 名称 も 然り です。
従前と名前が変更されているものがあった筈です。


また、
単一 Layer を扱う前提であったものが、複数を扱える様になった影響もあります。
一部の 関数 で、引数 が変更されている様です。
同様に、引数 の見直しがされたものもあるかも知れません。
一応、Procedure Browser から 確認して置く のをお勧めします。


此処迄述べて来た事は、実行時にエラーとなる事で初めて分かる事かも知れません。
関数名の代替はリストがありますが、 其れ以外は、試行錯誤が必要になる、と。


さて、
此処からの お話し には、推論が含まれます。

試行錯誤と書きましたが、 其れすら、辿り着かないでしょう。
メニュー項目に現れないケースが非常に多いと思います。

実は、
GIMP 3 になると gi (GObject Introspection) の考え方が導入されます。
  GObject は GLib Object System だそうです。
GIMP の Python を見れば、此の事が明確に分かります。
Script-Fu でも 同様の筈 ですが、
GIMP 本体内で 処理 される為に、表面的には あまり 顔を覗かせません。
しかし、GIMP 起動時に、登録スクリプトを組み込む(読み込む)段階で、影響が出て来ます。
メニュー内にスクリプトを配置する段階で、
従前と同じ記述方法では、蹴られて仕舞い、結果、メニューには現れません。
Procedure Browser 等を覗けば、あるにはあるのですが、不完全に機能していて、
普通の感覚では 使えない と言う状況に陥ります。
Procedure 其の物としては 認識 していますが、登録の記述が 不正確な為、でしょう。
恐らく、原因は 文字列の扱い方!。

さて、基本に戻って、メニューで行われるのは、名称の表示 と 概要の表示 と ですね。
このふたつの文字列は "文字列" では 受け入れられません。
_"文字列" にして、初めて、機能し出します。
script-fu.exe と言う plug-ins では無く、GIMP 本体が実行処理しているからだと想像しています。

此れの ヒント は Python Script で、
import gettext
_ = gettext.gettext
def N_(message): return message
としている事からも想像出来ます。
gettext は GIMP の様な 多国語表示 を賄う為の仕組みの様です。
script や plug-ins の中で 英語表記のみで定義されていても、
表示言語に合わせた表記表示をしているのは、此のお陰でしょう。
無論、別途用意された 多国語のデータ群 が其れを支えている筈なのですが、
今回の趣旨からは外れるので、 深追いは止めて置きます。  (本音:理解不能)
でも、此の辺りが絡んでいるのは間違い無いでしょう。

既に、GIMP 2.10 で 問題無く 動いているならば(Verbose 付きで実行でも Warning 無し ならば)、
(script-fu-register ~ の ;func と ;menu label と ;description と3項目、
場合に依っては( ;menu label の値が無いケース)、;func と ;description と2項目、
搔い摘めば、最初の 2~3項目、
"文字列" を _"文字列" に変更 しましょう。

次に来る ;author (/owner) 以降は此の範疇ではありません。
同様な対応をしても、弊害は 今の処 見られませんけれど ... 。
でも、 引数記述中に文字列が来る場合には 同様に対応しているケース が 殆どです。 (標準添付の Script-Fu)


此れで、警告表示無し で 動く筈です。  現在は。

但し、GIMP 3 に向けて開発中ですから、また、変更が生じるかも知れません。
正式公開を迎える迄は、多少の紆余曲折があっても、不思議ではありませんから。

そして、現状、 GIMP 2.99 上で動く様にして置く のが良さそうです。
作業量は以外にも多くなると思われますので、
切羽詰まってからより、今のうちから、余裕を持って、 が望ましい気がします。
健闘! を祈っています。  ;)



0 件のコメント:

コメントを投稿