====== 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に大抵のものはのっています