GIMPにおいて Python-fu を使ってプラグインを作成する際に、プラグインをファイルが読み込まれているときのみ有効にしたい場合があります。つまり、ファイルが読み込まれていないときは薄く表示され無効にしておきたい場合です。
これはどのように実現したらよいでしょうか? 以下、以前お示しした、基本的なプラグインのひな型を再掲します。
基本的なひな型
#!/usr/bin/python →Pythonインタープリターを起動
# -*- coding: codename -*- ←必要に応じてスクリプトで使う文字コードを宣言
必要なければこの行自体不要
メニューに日本語を表示したい場合 codenameはutf-8にする
同時にプラグインファイル全体をuft-8で保存しておく
from gimpfu import * →Python用GIMPライブラリを呼び出す 他のライブラリも呼び出す必要があれば適宜ここで宣言
def plugin_name( 引数 ): →プラグインの本体を以下定義
ここにプラグインの具体的処理内容をインデントをつけて記述
register( →以下GIMPにプラグインとして登録する際の情報を記述
"proc_name", →プラグインコマンド名
"blurb", →プロシジャーブラウザに表示するプラグインの説明
"help", →プラグインのhelpで表示する説明 blurbと同一で可
"author", →プラグイン著者名
"copyright", →プラグイン著作権者名 通常はauthorと同一
"date", →著作年等
"label", →メニューの中で表示されるプラグインのラベル
例えば、"Resize to max..." 等
"imagetypes", →プラグインが処理対象とする画像のタイプ
具体的には RGB, RGB*, GRAY*, INDEXEDなど
指定しないなら "" で良い。また2つ以上指定するならカンマで区切り
"RGB*,GRAY*" などと記述
[parms], →プラグインに与えるパラメーター
もしプラグイン起動時に入力ダイアログを表示する場合はここに記述※
入力ダイアログがなければ のまま
, →プラグインの結果 通常は [] のままでよい
plugin_name,
→Plugin_nameは、Pythonコードで呼び出す際のメソッドの名前
def で、定義した名前を使用。
def で plugin_main としたら
ここでも、それと同じく plugin_main と書く。
menu = "menuexpresson")
→また、menuexpression は、プラグインをGIMPのメニューの
どこに表示するかを指示する。
main() →プラグイン本体を呼び出し
で、この上の imagetypes というところがありますが、ここに "*" とアステリスクを入れます。するとファイルが読み込まれていないとき、そのプラグインは無効になります。また特定の型の画像が読み込まれているときだけ有効にしたいときは、"RGB*" だとか、"GRAY*" , "INDEXED*"などと指定すると、その型の画像が読み込まれているときだけ有効になります。
逆にファイルが読み込まれてないときにも動作させたい場合 (例えば、プラグインを起動してファイルを読み込むなど) は、ここに何かを記述してしまうと、ファイルが読み込まれないと無効となり、うまく動作しないことになります。ご注意ください。