blob: dd74e3b0ebc9b714d93d17c150d4d5332494e1a2 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
Sylpheed プラグイン仕様
=======================
Sylpheed のプラグイン機構の構成は以下のようになっています。
+----------+ +----------------------+ +-----------+
| Sylpheed |----| libsylpheed-plugin-0 |--+--| Plug-in A |
+----------+ +----------------------+ | +-----------+
Sylpheed 本体 プラグインインタフェース | プラグイン DLL
ライブラリ +--+
| +------------+ | | +-----------+
+--------| libsylph-0 |---------+ +--| Plug-in B |
+------------+ +-----------+
LibSylph メールライブラリ
Sylpheed は起動時にプラグインディレクトリにインストールされている
プラグイン DLL をメモリにロードします。
プラグインは libsylpheed-plugin-0 と libsylph-0 ライブラリで
提供されている API を通してのみ Sylpheed の機能にアクセスできます。
プラグイン API には、プラグインが直接呼び出す関数群と、
GObject のシグナル機構を利用して、特定のイベントが発生した場合に
コールバック関数を呼び出すものの2種類があります。
プラグイン機構は libsylph/sylmain.[ch] と src/plugin.[ch] で実装されて
います。
プラグイン API
==============
Sylpheed から利用する関数
-------------------------
gint syl_plugin_init_lib (void);
libsylpheed-plugin-0 ライブラリの初期化を行います。
-------------------------------------------------------------------------
gint syl_plugin_load (const gchar *file);
プラグイン DLL ファイルをメモリにロードします。
-------------------------------------------------------------------------
gint syl_plugin_load_all (const gchar *dir);
指定したディレクトリ内のプラグイン DLL ファイルをメモリにロードします。
-------------------------------------------------------------------------
void syl_plugin_unload_all (void);
ロードしたすべてのプラグインをアンロードします。
-------------------------------------------------------------------------
GSList *syl_plugin_get_module_list (void);
現在メモリにロードされているプラグインのリストを取得します。
GModule 構造体へのポインタのリストが返ります。
リストはライブラリ内部で保持しているため、解放できません。
-------------------------------------------------------------------------
SylPluginInfo *syl_plugin_get_info (GModule *module);
プラグインの情報を取得します。情報は SylPluginInfo 構造体で返ります。
-------------------------------------------------------------------------
gboolean syl_plugin_check_version (GModule *module);
プラグインインタフェースのバージョンを比較し、互換性があるかどうかを
確認します。バージョンが一致する場合は TRUE 、一致しない場合は FALSE
が返ります。
-------------------------------------------------------------------------
gint syl_plugin_add_symbol (const gchar *name, gpointer sym);
ライブラリにシンボル名とそれに関連付けられるポインタ値を登録します。
-------------------------------------------------------------------------
gpointer syl_plugin_lookup_symbol (const gchar *name);
syl_plugin_add_symbol() で登録したシンボルを検索し、ポインタ値を返します。
プラグインから利用する関数
--------------------------
シグナルの一覧
--------------
サンプルプラグイン
==================
|