====== Eye of Gnomeプラグイン ====== gnome標準画像ビューアであるEye of Gnome(eog)のプラグインを作ってみる。 ====== Pythonでのプラグインの作成方法 ====== * eogから、メニューでgimpへ画像ファイルを渡すことができるプラグイン(EogInvoker)の作成を例にすすめる。 * 「~/.gnome2/eog/plugins」がプラグインディレクトリ * 参考ページ: http://live.gnome.org/EyeOfGnome/Plugins ===== (1)プラグインファイルを作成する ===== プラグインディレクトリ(~/.gnome2/eog/plugins)以下に、「プラグイン名.eog-plugin」と言う名前でファイルを作成する。このファイルがプラグインに関する情報を記述するファイルになる。 ファイル名は今回'eoginvoker.eog-plugin'にしました。 内容は以下のとおり。 [Eog Plugin] Loader=python Module=eoginvoker IAge=2 Name=EoG-Invoker Icon=postr Description=Invoker Authors=sunagae Copyright=Copyright (c) 2009 Sunagae Website=about:mozilla ===== (2)コードの作成 ===== 前項の「Module=」で指定した名前でソースを作成します。 ということでファイル名は「eoginvoker.py」です。 (若干gimpの呼び出しかたが乱暴な気がしますが・・・) import eog import os import gtk ui_str = """ """ class EoGInvokerPlugin(eog.Plugin): def __init__(self): eog.Plugin.__init__(self) def activate(self, window): print 'The answer landed on my rooftop, whoa' data = dict() ui_manager = window.get_ui_manager() data['group'] = gtk.ActionGroup('EoGInvoker') data['group'].add_actions([('InvokeGIMP', None, 'Invoke Gimp', None, None, self.invoke_cb)], window) ui_manager.insert_action_group(data['group'], 0) data['ui_id'] = ui_manager.add_ui_from_string(ui_str) window.set_data('EogInvokerPluginInfo', data) window.connect('delete-event', self.self_deactivate) def deactivate(self, window): data = window.get_data('EogInvokerPluginInfo') ui_manager = window.get_ui_manager() ui_manager.remove_ui(data['ui_id']) ui_manager.remove_action_group(data['group']) ui_manager.ensure_update() window.set_data("EogInvokerPluginInfo", None) def invoke_cb(self, action, window): os.system("gimp \"" + window.get_image().get_uri_for_display() + "\" &") def self_deactivate(self, window, event): self.deactivate(window) ===== (3)完成〜 ===== * ということでこんな感じになりました。 {{:software:small:screenshot-eog-plugin-invoker.jpg|}} ===== コードの書き方について ===== * メンバ関数が呼ばれたとき渡されるwindowを頼りに、情報の取得をしたりするようです。。。 * APIに関しては、devhelpに大抵のものはのっています