summaryrefslogtreecommitdiff
path: root/PLUGIN.ja.txt
diff options
context:
space:
mode:
authorSimeon Simeonov2018-02-26 11:23:00 +0100
committerSimeon Simeonov2018-02-26 11:23:00 +0100
commit0b3cbf57875fd692e4ba0b336fefa4bee1ed00dc (patch)
treeaf916a30553c78ce9d4f2d8658656a175c5b6921 /PLUGIN.ja.txt
Initial commit for sylpheed 3.7.0
Diffstat (limited to 'PLUGIN.ja.txt')
-rw-r--r--PLUGIN.ja.txt411
1 files changed, 411 insertions, 0 deletions
diff --git a/PLUGIN.ja.txt b/PLUGIN.ja.txt
new file mode 100644
index 0000000..db11f5a
--- /dev/null
+++ b/PLUGIN.ja.txt
@@ -0,0 +1,411 @@
1Sylpheed プラグイン仕様
2=======================
3
4Sylpheed のプラグイン機構の構成は以下のようになっています。
5
6 +----------+ +----------------------+ +-----------+
7 | Sylpheed |----| libsylpheed-plugin-0 |--+--| Plug-in A |
8 +----------+ +----------------------+ | +-----------+
9Sylpheed 本体 プラグインインタフェース | プラグイン DLL
10 ライブラリ +--+
11 | +------------+ | | +-----------+
12 +--------| libsylph-0 |---------+ +--| Plug-in B |
13 +------------+ +-----------+
14 LibSylph メールライブラリ
15
16Sylpheed は起動時にプラグインディレクトリにインストールされている
17プラグイン DLL をメモリにロードします。
18
19プラグインは libsylpheed-plugin-0 と libsylph-0 ライブラリで
20提供されている API を通してのみ Sylpheed の機能にアクセスできます。
21
22プラグイン API には、プラグインが直接呼び出す関数群と、
23GObject のシグナル機構を利用して、特定のイベントが発生した場合に
24コールバック関数を呼び出すものの2種類があります。
25
26プラグイン機構は libsylph/sylmain.[ch] と src/plugin.[ch] で実装されて
27います。
28
29
30プラグイン API
31==============
32
33Sylpheed から利用する関数
34-------------------------
35
36-------------------------------------------------------------------------
37void syl_plugin_signal_connect (const gchar *name, GCallback callback,
38 gpointer data);
39
40SylPlugin オブジェクト(ライブラリ内部で保持)で利用できるシグナルに
41接続します。シグナルを受け取るコールバック関数の仕様は通常の GObject と
42同様です。
43利用できるシグナルに関してはシグナルの一覧を参照してください。
44-------------------------------------------------------------------------
45void syl_plugin_signal_disconnect(gpointer func, gpointer data);
46
47syl_plugin_signal_connect() で接続したシグナルを解除します。
48-------------------------------------------------------------------------
49void syl_plugin_signal_emit(const gchar *name, ...);
50
51SylPlugin オブジェクトのシグナルを発行します。
52-------------------------------------------------------------------------
53gint syl_plugin_init_lib (void);
54
55libsylpheed-plugin-0 ライブラリの初期化を行います。
56-------------------------------------------------------------------------
57gint syl_plugin_load (const gchar *file);
58
59プラグイン DLL ファイルをメモリにロードします。
60-------------------------------------------------------------------------
61gint syl_plugin_load_all (const gchar *dir);
62
63指定したディレクトリ内のプラグイン DLL ファイルをメモリにロードします。
64-------------------------------------------------------------------------
65void syl_plugin_unload_all (void);
66
67ロードしたすべてのプラグインをアンロードします。
68-------------------------------------------------------------------------
69GSList *syl_plugin_get_module_list (void);
70
71現在メモリにロードされているプラグインのリストを取得します。
72GModule 構造体へのポインタのリストが返ります。
73リストはライブラリ内部で保持しているため、解放できません。
74-------------------------------------------------------------------------
75SylPluginInfo *syl_plugin_get_info (GModule *module);
76
77プラグインの情報を取得します。情報は SylPluginInfo 構造体で返ります。
78-------------------------------------------------------------------------
79gboolean syl_plugin_check_version (GModule *module);
80
81プラグインインタフェースのバージョンを比較し、互換性があるかどうかを
82確認します。バージョンが一致する場合は TRUE 、一致しない場合は FALSE
83が返ります。
84-------------------------------------------------------------------------
85gint syl_plugin_add_symbol (const gchar *name, gpointer sym);
86
87ライブラリにシンボル名とそれに関連付けられるポインタ値を登録します。
88-------------------------------------------------------------------------
89gpointer syl_plugin_lookup_symbol (const gchar *name);
90
91syl_plugin_add_symbol() で登録したシンボルを検索し、ポインタ値を返します。
92-------------------------------------------------------------------------
93
94
95プラグインが実装しなければならない関数
96--------------------------------------
97
98-------------------------------------------------------------------------
99void plugin_load(void)
100
101プラグインのロード時に Sylpheed から呼び出されます。
102ここでプラグインの初期化処理などを行います。
103-------------------------------------------------------------------------
104void plugin_unload(void)
105
106プラグインのアンロード時に Sylpheed から呼び出されます。
107ここでプラグインの後処理などを行います。
108-------------------------------------------------------------------------
109SylPluginInfo *plugin_info(void)
110
111プラグインの情報を格納する構造体を Sylpheed に返すための関数です。
112通常は静的な構造体へのポインタを返します。
113-------------------------------------------------------------------------
114gint plugin_interface_version(void)
115
116プラグイン API のインタフェースのバージョンを Sylpheed に返すための
117関数です。プラグインでは通常は定数 SYL_PLUGIN_INTERFACE_VERSION を返し、
118Sylpheed ではこの値を Sylpheed 本体側の値と比較し、互換性のあるバージョン
119かどうかをチェックします。 Sylpheed 本体のプラグインインタフェースバージョン
120はプラグインのプラグインインタフェースバージョン以上である必要があります。
121また、インタフェースバージョンのメジャーバージョンが異なる場合も互換性は
122なくなります。
123
124例1: Sylpheed のプラグインインタフェースバージョンが 0x0102 で
125 プラグインのプラグインインタフェースバージョンが 0x0100 の場合 OK
126例2: Sylpheed のプラグインインタフェースバージョンが 0x0102 で
127 プラグインのプラグインインタフェースバージョンが 0x0103 の場合 NG
128-------------------------------------------------------------------------
129
130
131プラグインから利用する関数
132--------------------------
133
134関数の一覧はヘッダファイル plugin.h を参照してください。
135
136
137シグナルの一覧
138--------------
139
140* libsylpheed-plugin-0
141
142以下のシグナルは syl_plugin_signal_connect() を呼び出して使用します。
143
144例: syl_plugin_signal_connect("plugin-load", G_CALLBACK(plugin_load_cb), data);
145
146-------------------------------------------------------------------------
147void (* plugin_load) (GObject *obj, GModule *module);
148
149syl_plugin_load() でプラグインをロードしたときに発行されるシグナルです。
150-------------------------------------------------------------------------
151void (* plugin_unload) (GObject *obj, GModule *module);
152
153syl_plugin_unload_all() でプラグインをアンロードしたときに発行される
154シグナルです。
155-------------------------------------------------------------------------
156void (* folderview_menu_popup) (GObject *obj, gpointer ifactory);
157
158FolderView でコンテキストメニューをポップアップしたときに発行される
159シグナルです。
160-------------------------------------------------------------------------
161void (* summaryview_menu_popup) (GObject *obj, gpointer ifactory);
162
163SummaryView でコンテキストメニューをポップアップしたときに発行される
164シグナルです。
165-------------------------------------------------------------------------
166void (* compose_created) (GObject *obj, gpointer compose);
167
168Compose メッセージ作成ウィンドウが作成されたときに発行されるシグナルです。
169-------------------------------------------------------------------------
170void (* compose_destroy) (GObject *obj, gpointer compose);
171
172Compose メッセージ作成ウィンドウが破棄される直前に発行されるシグナルです。
173-------------------------------------------------------------------------
174void (* textview_menu_popup) (GObject *obj,
175 GtkMenu *menu,
176 GtkTextView *textview,
177 const gchar *uri,
178 const gchar *selected_text,
179 MsgInfo *msginfo);
180
181TextView でコンテキストメニューをポップアップするときに発行される
182シグナルです。ここで渡された GtkMenu に対して任意のメニュー項目を
183追加することができます。
184メニューオブジェクトはメニューを開くたびに作成され、閉じられると自動的に
185破棄されるため、毎回メニュー項目を追加する必要があります。
186
187menu: コンテキストメニューオブジェクト
188textview: GtkTextView オブジェクト
189uri: URI の上でメニューを表示した場合その URI 文字列
190selected_text: テキストビューでテキストが選択されている場合、その文字列
191msginfo: テキストビューで表示されているメッセージの MsgInfo オブジェクト
192-------------------------------------------------------------------------
193gboolean (* compose_send) (GObject *obj,
194 gpointer compose,
195 gint compose_mode,
196 gint send_mode,
197 const gchar *msg_file,
198 GSList *to_list);
199
200作成したメッセージが送信されようとするときに発行されるシグナルです。
201FALSE を返すと、メッセージは通常通り送信されます。
202TRUE を返すと、送信はキャンセルされます。
203
204compose: Compose オブジェクト
205compose_mode: ComposeMode enum
206send_mode: 0: 即座に送信 1: 送信待ちに入れて後で送信
207msg_file: 作成したメッセージファイルのパス
208to_list: 宛先のリスト
209-------------------------------------------------------------------------
210void (* messageview_show) (GObject *obj,
211 gpointer msgview,
212 MsgInfo *msginfo,
213 gboolean all_headers);
214
215メッセージを表示するときに発行されるシグナルです。
216
217msgview: MessageView オブジェクト
218msginfo: 表示された MsgInfo メッセージオブジェクト
219all_headers: 全ヘッダ表示時は TRUE。一部のみ表示時は FALSE。
220-------------------------------------------------------------------------
221void (* inc_mail_start) (GObject *obj,
222 PrefsAccount *account);
223
224受信開始時に発行されるシグナルです。
225
226account: 受信対象のアカウント (PrefsAccount)
227-------------------------------------------------------------------------
228void (* inc_mail_finished) (GObject *obj,
229 gint new_messages);
230
231受信終了時に発行されるシグナルです。
232
233new_messages: 受信したメッセージ数
234-------------------------------------------------------------------------
235void (* prefs_common_open) (GObject *obj,
236 GtkWidget *window);
237
238全般の設定ダイアログを開いたときに発行されるシグナルです。
239
240window: ダイアログウィンドウ (GtkWindow)
241-------------------------------------------------------------------------
242void (* prefs_account_open) (GObject *obj,
243 PrefsAccount *account,
244 GtkWidget *window);
245
246アカウント設定ダイアログを開いたときに発行されるシグナルです。
247
248window: ダイアログウィンドウ (GtkWindow)
249-------------------------------------------------------------------------
250void (* prefs_filter_open) (GObject *obj,
251 GtkWidget *window);
252
253振り分けルール設定ダイアログを開いたときに発行されるシグナルです。
254
255window: ダイアログウィンドウ (GtkWindow)
256-------------------------------------------------------------------------
257void (* prefs_filter_edit_open) (GObject *obj,
258 FilterRule *rule,
259 const gchar *header,
260 const gchar *key,
261 GtkWidget *window);
262
263振り分けルール編集ダイアログを開いたときに発行されるシグナルです。
264
265window: ダイアログウィンドウ (GtkWindow)
266-------------------------------------------------------------------------
267void (* prefs_template_open) (GObject *obj,
268 GtkWidget *window);
269
270テンプレートダイアログを開いたときに発行されるシグナルです。
271
272window: ダイアログウィンドウ (GtkWindow)
273-------------------------------------------------------------------------
274void (* plugin_manager_open) (GObject *obj,
275 GtkWidget *window);
276
277プラグインの管理ダイアログを開いたときに発行されるシグナルです。
278
279window: ダイアログウィンドウ (GtkWindow)
280-------------------------------------------------------------------------
281void (* main_window_toolbar_changed) (GObject *obj);
282
283メインウィンドウのツールバー変更時に発行されるシグナルです。
284メインウィンドウのツールバーオブジェクトを取得する場合は
285syl_plugin_main_window_get_toolbar() を使用してください。
286-------------------------------------------------------------------------
287void (* compose_toolbar_changed) (GObject *obj, gpointer compose);
288
289メッセージ作成ウィンドウのツールバー変更時に発行されるシグナルです。
290メッセージ作成ウィンドウのツールバーオブジェクトを取得する場合は
291syl_plugin_compose_get_toolbar() を使用してください。
292-------------------------------------------------------------------------
293void (* compose_attach_changed) (GObject *obj, gpointer compose);
294
295メッセージ作成ウィンドウ上の添付ファイルが変更された場合に発行される
296シグナルです。現在の添付ファイルのリストを取得する場合は
297syl_plugin_get_attach_list() を使用してください。
298
299compose: Compose オブジェクト
300-------------------------------------------------------------------------
301
302* libsylph-0
303
304以下のシグナルは g_signal_connect() の第一引数に syl_app_get() で得られる
305GObject を渡して使用します。
306
307例:
308
309void init_done_cb(GObject *obj, gpointer data)
310{
311 ...
312}
313
314 g_signal_connect(syl_app_get(), "init-done", G_CALLBACK(init_done_cb),
315 data);
316
317-------------------------------------------------------------------------
318void (* init_done) (GObject *obj)
319
320アプリケーションの初期化が完了した時点で発行されます。
321-------------------------------------------------------------------------
322void (* app_exit) (GObject *obj)
323
324アプリケーションが終了する時に発行されます。
325-------------------------------------------------------------------------
326void (* app_force_exit) (GObject *obj)
327
328アプリケーションが強制的(確認なし)に終了するときに発行されます。
329(例: sylpheed --exit)
330-------------------------------------------------------------------------
331void (* add_msg) (GObject *obj, FolderItem *item, const gchar *file, guint num)
332
333フォルダ item に番号 num のメッセージが追加された時に発行されます。
334-------------------------------------------------------------------------
335void (* remove_msg) (GObject *obj, FolderItem *item, const gchar *file,
336 guint num)
337
338フォルダ item から番号 num のメッセージが削除される時に発行されます。
339-------------------------------------------------------------------------
340void (* remove_all_msg) (GObject *obj, FolderItem *item)
341
342フォルダ item からすべてのメッセージが削除されるときに発行されます。
343-------------------------------------------------------------------------
344void (* remove_folder) (GObject *obj, FolderItem *item)
345
346フォルダ item が削除されるときに発行されます。
347-------------------------------------------------------------------------
348void (* move_folder) (GObject *obj, FolderItem *item, const gchar *old_id,
349 const gchar *new_id)
350
351フォルダ item が old_id から new_id に移動(リネーム)されるときに
352発行されます。 old_id, new_id はフォルダ識別子文字列です。
353-------------------------------------------------------------------------
354void (* folderlist_updated) (GObject *obj)
355
356フォルダ情報が変更され、フォルダリストを格納した folderlist.xml ファイルが
357更新されたときに発行されます。
358-------------------------------------------------------------------------
359void (* account_updated) (GObject *obj)
360
361アカウント情報が更新されたときに発行されるシグナルです。
362ただし、 account_update_lock() によってロックされている場合は
363発行されません。
364-------------------------------------------------------------------------
365
366
367サンプルプラグイン
368==================
369
370plugin ディレクトリ以下にサンプルプラグインがあります。これらのプラグインは
371make install ではインストールされません。インストールするには
372plugin/ 以下の各ディレクトリに入って make install-plugin を実行してください。
373
374Test Plug-in
375------------
376
377test プラグインは Sylpheed プラグインの基本的な構造に加え、以下の処理を
378行います。
379
380- ロード時に標準出力に "test plug-in loaded!" という文字列を出力
381- フォルダの一覧を取得し、標準出力に表示
382- Sylpheed のバージョン文字列を取得し、標準出力に表示
383- メインウィンドウを取得し、前面に出す
384- フォルダビューの下にサブウィジェットを追加
385- 「ツール」メニューに「Plugin test」メニュー項目を追加
386- 「Plugin test」メニューを選択すると、「Click this button」という
387 ボタンのみのウィンドウを表示し、クリックするとメッセージを出力
388- アプリケーション初期化、終了、フォルダビューのコンテキストメニュー
389 ポップアップ、メッセージ作成ウィンドウ作成、メッセージ作成ウィンドウ破棄
390 のイベントを捕捉してメッセージを表示
391- テキストビューのコンテキストメニュー表示イベントを捕捉してメニュー項目を追加
392
393Attachment Tool Plug-in
394-----------------------
395
396添付ファイルつきのメッセージを操作するためのプラグインです。
397
398詳細は plugin/attachment_tool/README を参照してください。
399
400
401ライセンスについて
402==================
403
404Sylpheed 本体のライセンスは GPL であるため、 Sylpheed から動的に
405読み込まれるプラグイン DLL は、 GPL の規定に基づき、 GPL または
406GPL と互換性のあるライセンス(修正 BSD ライセンスなど)である必要が
407あります。
408
409プラグインに商用ライセンスなど他のライセンスを適用したい場合は、
410そのモジュールを独立した実行ファイルにして、 DLL とプロセス間通信で
411連携して動作させる必要があります。