Translations of this page:

Eye of Gnomeプラグイン

gnome標準画像ビューアであるEye of Gnome(eog)のプラグインを作ってみる。

Pythonでのプラグインの作成方法

  • eogから、メニューでgimpへ画像ファイルを渡すことができるプラグイン(EogInvoker)の作成を例にすすめる。
  • 「~/.gnome2/eog/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 <sunagae  sunagae.net>
Copyright=Copyright (c) 2009 Sunagae
Website=about:mozilla

(2)コードの作成

前項の「Module=」で指定した名前でソースを作成します。 ということでファイル名は「eoginvoker.py」です。

(若干gimpの呼び出しかたが乱暴な気がしますが・・・)

eoginvoker.py
import eog
import os
import gtk
 
ui_str = """
	<ui>
	  <menubar name="MainMenu">
	    <menu name="ToolsMenu" action="Tools">
	      <separator/>
	      <menuitem name="InvokeGIMP" action="InvokeGIMP"/>
	      <separator/>
	    </menu>
	  </menubar>
	</ui>
	"""
 
 
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)完成〜

  • ということでこんな感じになりました。

コードの書き方について

  • メンバ関数が呼ばれたとき渡されるwindowを頼りに、情報の取得をしたりするようです。。。
  • APIに関しては、devhelpに大抵のものはのっています
 
software/small/eog_plugin.txt · 最終更新: 2011/07/28 05:03 by sunagae
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki