メニューでテキストを入力するダイアログを表示します。
ソースコード
ファイル名:sample_dialog_plugin\sample_dialog_plugin.py
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import sys
import gi
gi.require_version('Gimp', '3.0')
gi.require_version('GimpUi', '3.0')
from gi.repository import Gimp, GimpUi, GObject
PROC_NAME = 'python-fu-sample-dialog'
class SampleDialog(Gimp.PlugIn):
def do_query_procedures(self):
return [PROC_NAME]
def do_create_procedure(self, name):
if name != PROC_NAME:
return None
proc = Gimp.ImageProcedure.new(self, name, Gimp.PDBProcType.PLUGIN, self.run, None)
proc.set_menu_label('サンプルダイアログ…')
proc.add_menu_path('<Image>/Filters/Python-Fu')
# レイヤー選択の有無どちらでも起動可
proc.set_sensitivity_mask(Gimp.ProcedureSensitivityMask.DRAWABLE |
Gimp.ProcedureSensitivityMask.NO_DRAWABLES)
proc.set_documentation('Sample dialog using ProcedureDialog', 'Demo', None)
# ---- 自動生成ダイアログ用の引数定義 ----
proc.add_string_argument('message', 'メッセージ', None, '', GObject.ParamFlags.READWRITE)
proc.add_boolean_argument('option', 'オプション', 'オプションを有効にする', False, GObject.ParamFlags.READWRITE)
return proc
# 正しいシグネチャ(drawables はリスト、最後は data)
def run(self, procedure, run_mode, image, drawables, config, data):
if run_mode == Gimp.RunMode.INTERACTIVE:
GimpUi.init('sample-dialog')
dialog = GimpUi.ProcedureDialog.new(procedure, config, 'サンプルダイアログ')
dialog.fill(['message', 'option'])
if not dialog.run():
dialog.destroy()
return procedure.new_return_values(Gimp.PDBStatusType.CANCEL, None)
dialog.destroy()
msg = config.get_property('message')
opt = config.get_property('option')
Gimp.message(f'入力結果: message="{msg}", option={opt}')
return procedure.new_return_values(Gimp.PDBStatusType.SUCCESS, None)
Gimp.main(SampleDialog.__gtype__, sys.argv)
実行イメージ
・メニューに登録されている様子
・ダイアログ
・結果
コメント