doc/plugin-ids.dox

Sun, 03 Jun 2012 20:23:23 +0000

author
Elliott Sales de Andrade <qulogic@pidgin.im>
date
Sun, 03 Jun 2012 20:23:23 +0000
changeset 33011
861a290f5464
parent 20898
43fed61d11a1
child 33955
55aa58076485
child 40969
c8d074d77a1e
permissions
-rw-r--r--

Convert the XMPP Console entry to WebKit.

Only thing it doesn't do is auto-sizing the entry widget.

7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
1 /** @page plugin-ids Plugin IDs
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
2
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
3 @section Introduction
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
4 Every plugin contains a unique identifier to prevent duplicate plugin
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
5 loading and conflicts. Third-party plugins (that is, plugins written by
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
6 anyone who is not a libpurple, Pidgin, or Finch developer) are expected
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
7 to use a plugin ID that follows a specific format. This format
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
8 categorizes plugins and makes duplicate IDs highly unlikely.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
9
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
10 @section Format
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
11 The basic format of a plugin ID is as follows:
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
12
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
13 <tt><i>type</i>-<i>username</i>-<i>pluginname</i></tt>
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
14
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
15 The @em type indicator specifies the type of plugin. This must be one
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
16 of the following:
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
17
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
18 - core - A core libpurple plugin, capable of being loaded in any
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
19 program using libpurple. Core plugins may not contain any
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
20 UI-specific code.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
21 - prpl - A protocol plugin. This is a special type of core plugin,
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
22 which provides libpurple the ability to connect to
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
23 another IM or chat network.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
24 - lopl - A loader plugin, which loads scripts as plugins. Perl and
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
25 Tcl plugins are made possible by loader plugins.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
26 - gtk - A GTK+ 2.x (a.k.a. Pidgin) plugin. These plugins may use
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
27 GTK+ code, but may not use window toolkit code, such as
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
28 X11, Win32, Cocoa, or Carbon.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
29 - gtk-x11 - A GTK+ 2.x plugin that uses X11 code. These plugins may
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
30 use both GTK+ code and X11 code, allowing to hook into
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
31 features specific to X11.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
32 - gtk-win32 - A GTK+ plugin that uses Win32 code. These plugins may use
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
33 both GTK+ code and Win32 code, allowing to hook into
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
34 features available on Windows.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
35 - gnt - A GNT (a.k.a. Finch) plugin. These plugins may use GNT code.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
36 - qpe - A plugin for the (now-abandoned) Qutopia user interface.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
37
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
38 The @em username must be a unique identifier for you. It
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
39 @em should be your http://developer.pidgin.im Trac user ID. Failing that, you
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
40 could use your SourceForge user ID or your Freenode IRC nickname, if you
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
41 have either. The http://developer.pidgin.im Trac user ID is preferred.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
42 Do @em not leave this field blank!
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
43
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
44 The @em pluginname is the name of your plugin. It is usually all
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
45 lowercase letters and matches the static plugin ID (the first argument to
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
46 the PURPLE_INIT_PLUGIN() macro call), although it can be anything you
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
47 like. Do @em not include version information in the plugin ID--the
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
48 #PurplePluginInfo structure already has a field for this.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
49
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
50 @section nospaces One Last Rule for Plugin IDs
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
51
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
52 The last rule of plugin IDs is the most important of all. Plugin IDs may
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
53 @em NOT contain spaces. If you need a space, use another hyphen (-).
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
54
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
55 @section exceptions Exceptions to the Rule
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
56
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
57 As with any rule there are exceptions. If you browse through the source
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
58 tree you will see that the plugins we distribute with the Pidgin source
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
59 do not contain a username field. This is because while one developer may
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
60 have written each specific plugin, the plugins are maintained
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
61 collectively by the entire development team. This lack of a username
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
62 field is also an indicator that the plugin is one of our plugins and not
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
63 a third-party plugin.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
64
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
65 Another exception to the rule is the <a
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
66 href="http://plugins.guifications.org/trac/wiki/PluginPack">Purple Plugin
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
67 Pack</a>. All plugins whose lives started in the Purple Plugin Pack use
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
68 <tt>"plugin_pack"</tt> for the username field to indicate origination in
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
69 the Purple Plugin Pack.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
70
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
71 These two exceptions are mentioned here for completeness. We don't
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
72 encourage breaking the conventions set forth by the rules outlined above.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
73
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
74 @section examples Examples of Well-Chosen Plugin IDs
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
75
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
76 The following is a list of well-chosen Plugin IDs listing a few good examples.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
77
20898
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
78 - <tt>"gtk-amc_grim-guifications"</tt> - This is the plugin ID for the
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
79 Guifications 2.x plugin.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
80 - <tt>"gtk-rlaager-album"</tt> - This is the plugin ID for the Album
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
81 plugin, which is now part of the
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
82 Purple Plugin Pack. Its ID follows the
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
83 rules because its life started prior
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
84 to its inclusion in the Plugin Pack.
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
85 - <tt>"core-rlaager-irchelper"</tt> - This is the plugin ID for the IRC
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
86 Helper plugin, which is now part
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
87 of the Purple Plugin Pack. Its ID
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
88 follows the rules because its
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
89 life started prior to its
43fed61d11a1 I basically copied most of
Will Thompson <resiak@pidgin.im>
parents: 20897
diff changeset
90 inclusion in the Plugin Pack.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
91
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
92 @section plugin-db Plugin Database
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
93 Although it doesn't exist yet, in time there will be a plugin database
16257
66f737e6b718 More renaming.
Richard Laager <rlaager@pidgin.im>
parents: 13925
diff changeset
94 on the Pidgin website, where users can download and install new plugins.
7335
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
95 Plugins will be accessed by your plugin ID, which is one reason why it
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
96 must be unique.
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
97
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
98 */
6e5ba33ea062 [gaim-migrate @ 7923]
Christian Hammond <chipx86@chipx86.com>
parents:
diff changeset
99
20897
2608e9e07913 Add some links from signal documentation back to the documentation for the
Will Thompson <resiak@pidgin.im>
parents: 16257
diff changeset
100 // vim: syntax=c.doxygen tw=75 et

mercurial