Statistics
| Revision:

root / PLUGIN.ja.txt

History | View | Annotate | Download (14.7 kB)

1 2174 hiro
Sylpheed プラグイン仕様
2 2174 hiro
=======================
3 2174 hiro
4 2174 hiro
Sylpheed のプラグイン機構の構成は以下のようになっています。
5 2174 hiro
6 2174 hiro
 +----------+    +----------------------+     +-----------+
7 2174 hiro
 | Sylpheed |----| libsylpheed-plugin-0 |--+--| Plug-in A |
8 2174 hiro
 +----------+    +----------------------+  |  +-----------+
9 2174 hiro
Sylpheed 本体    プラグインインタフェース  |  プラグイン DLL
10 2174 hiro
                 ライブラリ             +--+
11 2174 hiro
        |        +------------+         |  |  +-----------+
12 2174 hiro
        +--------| libsylph-0 |---------+  +--| Plug-in B |
13 2174 hiro
                 +------------+               +-----------+
14 2174 hiro
                 LibSylph メールライブラリ
15 2174 hiro
16 2174 hiro
Sylpheed は起動時にプラグインディレクトリにインストールされている
17 2174 hiro
プラグイン DLL をメモリにロードします。
18 2174 hiro
19 2174 hiro
プラグインは libsylpheed-plugin-0 と libsylph-0 ライブラリで
20 2174 hiro
提供されている API を通してのみ Sylpheed の機能にアクセスできます。
21 2174 hiro
22 2174 hiro
プラグイン API には、プラグインが直接呼び出す関数群と、
23 2174 hiro
GObject のシグナル機構を利用して、特定のイベントが発生した場合に
24 2174 hiro
コールバック関数を呼び出すものの2種類があります。
25 2174 hiro
26 2174 hiro
プラグイン機構は libsylph/sylmain.[ch] と src/plugin.[ch] で実装されて
27 2174 hiro
います。
28 2174 hiro
29 2184 hiro
30 2174 hiro
プラグイン API
31 2174 hiro
==============
32 2174 hiro
33 2174 hiro
Sylpheed から利用する関数
34 2174 hiro
-------------------------
35 2174 hiro
36 2175 hiro
-------------------------------------------------------------------------
37 2178 hiro
void syl_plugin_signal_connect  (const gchar *name, GCallback callback,
38 2178 hiro
                                 gpointer data);
39 2178 hiro
40 2178 hiro
SylPlugin オブジェクト(ライブラリ内部で保持)で利用できるシグナルに
41 2178 hiro
接続します。シグナルを受け取るコールバック関数の仕様は通常の GObject と
42 2178 hiro
同様です。
43 2178 hiro
利用できるシグナルに関してはシグナルの一覧を参照してください。
44 2178 hiro
-------------------------------------------------------------------------
45 2178 hiro
void syl_plugin_signal_disconnect(gpointer func, gpointer data);
46 2178 hiro
47 2178 hiro
syl_plugin_signal_connect() で接続したシグナルを解除します。
48 2178 hiro
-------------------------------------------------------------------------
49 2178 hiro
void syl_plugin_signal_emit(const gchar *name, ...);
50 2178 hiro
51 2178 hiro
SylPlugin オブジェクトのシグナルを発行します。
52 2178 hiro
-------------------------------------------------------------------------
53 2174 hiro
gint syl_plugin_init_lib        (void);
54 2174 hiro
55 2174 hiro
libsylpheed-plugin-0 ライブラリの初期化を行います。
56 2174 hiro
-------------------------------------------------------------------------
57 2174 hiro
gint syl_plugin_load            (const gchar *file);
58 2174 hiro
59 2174 hiro
プラグイン DLL ファイルをメモリにロードします。
60 2174 hiro
-------------------------------------------------------------------------
61 2174 hiro
gint syl_plugin_load_all        (const gchar *dir);
62 2174 hiro
63 2174 hiro
指定したディレクトリ内のプラグイン DLL ファイルをメモリにロードします。
64 2174 hiro
-------------------------------------------------------------------------
65 2174 hiro
void syl_plugin_unload_all      (void);
66 2174 hiro
67 2174 hiro
ロードしたすべてのプラグインをアンロードします。
68 2174 hiro
-------------------------------------------------------------------------
69 2174 hiro
GSList *syl_plugin_get_module_list      (void);
70 2174 hiro
71 2174 hiro
現在メモリにロードされているプラグインのリストを取得します。
72 2174 hiro
GModule 構造体へのポインタのリストが返ります。
73 2174 hiro
リストはライブラリ内部で保持しているため、解放できません。
74 2174 hiro
-------------------------------------------------------------------------
75 2174 hiro
SylPluginInfo *syl_plugin_get_info      (GModule *module);
76 2174 hiro
77 2174 hiro
プラグインの情報を取得します。情報は SylPluginInfo 構造体で返ります。
78 2174 hiro
-------------------------------------------------------------------------
79 2174 hiro
gboolean syl_plugin_check_version       (GModule *module);
80 2174 hiro
81 2174 hiro
プラグインインタフェースのバージョンを比較し、互換性があるかどうかを
82 2174 hiro
確認します。バージョンが一致する場合は TRUE 、一致しない場合は FALSE
83 2174 hiro
が返ります。
84 2174 hiro
-------------------------------------------------------------------------
85 2174 hiro
gint syl_plugin_add_symbol              (const gchar *name, gpointer sym);
86 2174 hiro
87 2174 hiro
ライブラリにシンボル名とそれに関連付けられるポインタ値を登録します。
88 2174 hiro
-------------------------------------------------------------------------
89 2174 hiro
gpointer syl_plugin_lookup_symbol       (const gchar *name);
90 2174 hiro
91 2174 hiro
syl_plugin_add_symbol() で登録したシンボルを検索し、ポインタ値を返します。
92 2175 hiro
-------------------------------------------------------------------------
93 2174 hiro
94 2175 hiro
95 2175 hiro
プラグインが実装しなければならない関数
96 2175 hiro
--------------------------------------
97 2175 hiro
98 2175 hiro
-------------------------------------------------------------------------
99 2175 hiro
void plugin_load(void)
100 2175 hiro
101 2175 hiro
プラグインのロード時に Sylpheed から呼び出されます。
102 2175 hiro
ここでプラグインの初期化処理などを行います。
103 2175 hiro
-------------------------------------------------------------------------
104 2175 hiro
void plugin_unload(void)
105 2175 hiro
106 2175 hiro
プラグインのアンロード時に Sylpheed から呼び出されます。
107 2175 hiro
ここでプラグインの後処理などを行います。
108 2175 hiro
-------------------------------------------------------------------------
109 2175 hiro
SylPluginInfo *plugin_info(void)
110 2175 hiro
111 2175 hiro
プラグインの情報を格納する構造体を Sylpheed に返すための関数です。
112 2175 hiro
通常は静的な構造体へのポインタを返します。
113 2175 hiro
-------------------------------------------------------------------------
114 2175 hiro
gint plugin_interface_version(void)
115 2175 hiro
116 2175 hiro
プラグイン API のインタフェースのバージョンを Sylpheed に返すための
117 2184 hiro
関数です。プラグインでは通常は定数 SYL_PLUGIN_INTERFACE_VERSION を返し、
118 2184 hiro
Sylpheed ではこの値を Sylpheed 本体側の値と比較し、互換性のあるバージョン
119 2184 hiro
かどうかをチェックします。 Sylpheed 本体のプラグインインタフェースバージョン
120 2184 hiro
はプラグインのプラグインインタフェースバージョン以上である必要があります。
121 2184 hiro
また、インタフェースバージョンのメジャーバージョンが異なる場合も互換性は
122 2184 hiro
なくなります。
123 2175 hiro
124 2184 hiro
例1: Sylpheed のプラグインインタフェースバージョンが 0x0102 で
125 2184 hiro
     プラグインのプラグインインタフェースバージョンが 0x0100 の場合 OK
126 2184 hiro
例2: Sylpheed のプラグインインタフェースバージョンが 0x0102 で
127 2184 hiro
     プラグインのプラグインインタフェースバージョンが 0x0103 の場合 NG
128 2175 hiro
-------------------------------------------------------------------------
129 2175 hiro
130 2175 hiro
131 2174 hiro
プラグインから利用する関数
132 2174 hiro
--------------------------
133 2174 hiro
134 2552 hiro
関数の一覧はヘッダファイル plugin.h を参照してください。
135 2175 hiro
136 2178 hiro
137 2174 hiro
シグナルの一覧
138 2174 hiro
--------------
139 2174 hiro
140 2178 hiro
* libsylpheed-plugin-0
141 2174 hiro
142 2181 hiro
以下のシグナルは syl_plugin_signal_connect() を呼び出して使用します。
143 2181 hiro
144 2181 hiro
例: syl_plugin_signal_connect("plugin-load", G_CALLBACK(plugin_load_cb), data);
145 2181 hiro
146 2178 hiro
-------------------------------------------------------------------------
147 2178 hiro
void (* plugin_load)    (GObject *obj, GModule *module);
148 2174 hiro
149 2178 hiro
syl_plugin_load() でプラグインをロードしたときに発行されるシグナルです。
150 2178 hiro
-------------------------------------------------------------------------
151 2178 hiro
void (* plugin_unload)  (GObject *obj, GModule *module);
152 2178 hiro
153 2178 hiro
syl_plugin_unload_all() でプラグインをアンロードしたときに発行される
154 2178 hiro
シグナルです。
155 2178 hiro
-------------------------------------------------------------------------
156 2178 hiro
void (* folderview_menu_popup)  (GObject *obj, gpointer ifactory);
157 2178 hiro
158 2178 hiro
FolderView でコンテキストメニューをポップアップしたときに発行される
159 2178 hiro
シグナルです。
160 2178 hiro
-------------------------------------------------------------------------
161 2666 hiro
void (* summaryview_menu_popup)  (GObject *obj, gpointer ifactory);
162 2666 hiro
163 2666 hiro
SummaryView でコンテキストメニューをポップアップしたときに発行される
164 2666 hiro
シグナルです。
165 2666 hiro
-------------------------------------------------------------------------
166 2527 hiro
void (* compose_created)        (GObject *obj, gpointer compose);
167 2178 hiro
168 2527 hiro
Compose メッセージ作成ウィンドウが作成されたときに発行されるシグナルです。
169 2527 hiro
-------------------------------------------------------------------------
170 2527 hiro
void (* compose_destroy)        (GObject *obj, gpointer compose);
171 2527 hiro
172 2527 hiro
Compose メッセージ作成ウィンドウが破棄される直前に発行されるシグナルです。
173 2527 hiro
-------------------------------------------------------------------------
174 2811 hiro
void (* textview_menu_popup)    (GObject *obj,
175 2811 hiro
                                 GtkMenu *menu,
176 2811 hiro
                                 GtkTextView *textview,
177 2811 hiro
                                 const gchar *uri,
178 2821 hiro
                                 const gchar *selected_text,
179 2821 hiro
                                 MsgInfo *msginfo);
180 2527 hiro
181 2811 hiro
TextView でコンテキストメニューをポップアップするときに発行される
182 2811 hiro
シグナルです。ここで渡された GtkMenu に対して任意のメニュー項目を
183 2811 hiro
追加することができます。
184 2821 hiro
メニューオブジェクトはメニューを開くたびに作成され、閉じられると自動的に
185 2821 hiro
破棄されるため、毎回メニュー項目を追加する必要があります。
186 2811 hiro
187 2811 hiro
menu: コンテキストメニューオブジェクト
188 2811 hiro
textview: GtkTextView オブジェクト
189 2811 hiro
uri: URI の上でメニューを表示した場合その URI 文字列
190 2811 hiro
selected_text: テキストビューでテキストが選択されている場合、その文字列
191 2821 hiro
msginfo: テキストビューで表示されているメッセージの MsgInfo オブジェクト
192 2811 hiro
-------------------------------------------------------------------------
193 2811 hiro
194 2178 hiro
* libsylph-0
195 2178 hiro
196 2184 hiro
以下のシグナルは g_signal_connect() の第一引数に syl_app_get() で得られる
197 2181 hiro
GObject を渡して使用します。
198 2181 hiro
199 2181 hiro
例:
200 2181 hiro
201 2181 hiro
void init_done_cb(GObject *obj, gpointer data)
202 2181 hiro
{
203 2181 hiro
    ...
204 2181 hiro
}
205 2181 hiro
206 2181 hiro
    g_signal_connect(syl_app_get(), "init-done", G_CALLBACK(init_done_cb),
207 2181 hiro
                     data);
208 2181 hiro
209 2178 hiro
-------------------------------------------------------------------------
210 2178 hiro
void (* init_done) (GObject *obj)
211 2178 hiro
212 2178 hiro
アプリケーションの初期化が完了した時点で発行されます。
213 2178 hiro
-------------------------------------------------------------------------
214 2181 hiro
void (* app_exit) (GObject *obj)
215 2178 hiro
216 2178 hiro
アプリケーションが終了する時に発行されます。
217 2178 hiro
-------------------------------------------------------------------------
218 2798 hiro
void (* app_force_exit) (GObject *obj)
219 2798 hiro
220 2798 hiro
アプリケーションが強制的(確認なし)に終了するときに発行されます。
221 2798 hiro
(例: sylpheed --exit)
222 2798 hiro
-------------------------------------------------------------------------
223 2181 hiro
void (* add_msg) (GObject *obj, FolderItem *item, const gchar *file, guint num)
224 2178 hiro
225 2178 hiro
フォルダ item に番号 num のメッセージが追加された時に発行されます。
226 2178 hiro
-------------------------------------------------------------------------
227 2181 hiro
void (* remove_msg) (GObject *obj, FolderItem *item, const gchar *file,
228 2181 hiro
                     guint num)
229 2178 hiro
230 2178 hiro
フォルダ item から番号 num のメッセージが削除される時に発行されます。
231 2178 hiro
-------------------------------------------------------------------------
232 2181 hiro
void (* remove_all_msg) (GObject *obj, FolderItem *item)
233 2178 hiro
234 2181 hiro
フォルダ item からすべてのメッセージが削除されるときに発行されます。
235 2181 hiro
-------------------------------------------------------------------------
236 2181 hiro
void (* remove_folder) (GObject *obj, FolderItem *item)
237 2181 hiro
238 2181 hiro
フォルダ item が削除されるときに発行されます。
239 2181 hiro
-------------------------------------------------------------------------
240 2181 hiro
void (* move_folder) (GObject *obj, FolderItem *item, const gchar *old_id,
241 2181 hiro
                      const gchar *new_id)
242 2181 hiro
243 2181 hiro
フォルダ item が old_id から new_id に移動(リネーム)されるときに
244 2181 hiro
発行されます。 old_id, new_id はフォルダ識別子文字列です。
245 2181 hiro
-------------------------------------------------------------------------
246 2181 hiro
void (* folderlist_updated) (GObject *obj)
247 2181 hiro
248 2181 hiro
フォルダ情報が変更され、フォルダリストを格納した folderlist.xml ファイルが
249 2181 hiro
更新されたときに発行されます。
250 2181 hiro
-------------------------------------------------------------------------
251 2527 hiro
void (* account_updated) (GObject *obj)
252 2181 hiro
253 2527 hiro
アカウント情報が更新されたときに発行されるシグナルです。
254 2527 hiro
ただし、 account_update_lock() によってロックされている場合は
255 2527 hiro
発行されません。
256 2527 hiro
-------------------------------------------------------------------------
257 2181 hiro
258 2527 hiro
259 2174 hiro
サンプルプラグイン
260 2174 hiro
==================
261 2174 hiro
262 2666 hiro
plugin ディレクトリ以下にサンプルプラグインがあります。これらのプラグインは
263 2175 hiro
make install ではインストールされません。インストールするには
264 2666 hiro
plugin/ 以下の各ディレクトリに入って make install-plugin を実行してください。
265 2175 hiro
266 2666 hiro
Test Plug-in
267 2666 hiro
------------
268 2666 hiro
269 2175 hiro
test プラグインは Sylpheed プラグインの基本的な構造に加え、以下の処理を
270 2175 hiro
行います。
271 2175 hiro
272 2175 hiro
- ロード時に標準出力に "test plug-in loaded!" という文字列を出力
273 2175 hiro
- フォルダの一覧を取得し、標準出力に表示
274 2175 hiro
- Sylpheed のバージョン文字列を取得し、標準出力に表示
275 2175 hiro
- メインウィンドウを取得し、前面に出す
276 2570 hiro
- フォルダビューの下にサブウィジェットを追加
277 2175 hiro
- 「ツール」メニューに「Plugin test」メニュー項目を追加
278 2438 hiro
- 「Plugin test」メニューを選択すると、「Click this button」という
279 2438 hiro
  ボタンのみのウィンドウを表示し、クリックするとメッセージを出力
280 2438 hiro
- アプリケーション初期化、終了、フォルダビューのコンテキストメニュー
281 2438 hiro
  ポップアップ、メッセージ作成ウィンドウ作成、メッセージ作成ウィンドウ破棄
282 2438 hiro
  のイベントを捕捉してメッセージを表示
283 2811 hiro
- テキストビューのコンテキストメニュー表示イベントを捕捉してメニュー項目を追加
284 2181 hiro
285 2666 hiro
Attachment Tool Plug-in
286 2666 hiro
-----------------------
287 2181 hiro
288 2666 hiro
添付ファイルつきのメッセージを操作するためのプラグインです。
289 2666 hiro
290 2666 hiro
詳細は plugin/attachment_tool/README を参照してください。
291 2666 hiro
292 2666 hiro
293 2181 hiro
ライセンスについて
294 2181 hiro
==================
295 2181 hiro
296 2181 hiro
Sylpheed 本体のライセンスは GPL であるため、 Sylpheed から動的に
297 2181 hiro
読み込まれるプラグイン DLL は、 GPL の規定に基づき、 GPL または
298 2181 hiro
GPL と互換性のあるライセンス(修正 BSD ライセンスなど)である必要が
299 2181 hiro
あります。
300 2181 hiro
301 2181 hiro
プラグインに商用ライセンスなど他のライセンスを適用したい場合は、
302 2181 hiro
そのモジュールを独立した実行ファイルにして、 DLL とプロセス間通信で
303 2181 hiro
連携して動作させる必要があります。