2
<!DOCTYPE refentry PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN"
3
"http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd">
4
<refentry id="RBPlugin">
6
<refentrytitle role="top_of_page" id="RBPlugin.top_of_page">RBPlugin</refentrytitle>
7
<manvolnum>3</manvolnum>
8
<refmiscinfo>RHYTHMBOX Library</refmiscinfo>
12
<refname>RBPlugin</refname>
13
<refpurpose>Base class for plugins</refpurpose>
16
<refsynopsisdiv id="RBPlugin.synopsis" role="synopsis">
17
<title role="synopsis.title">Synopsis</title>
20
<link linkend="RBPlugin-struct">RBPlugin</link>;
21
<link linkend="RBPluginClass">RBPluginClass</link>;
22
<link linkend="void">void</link> (<link linkend="RBPluginActivationFunc">*RBPluginActivationFunc</link>) (<link linkend="RBPlugin">RBPlugin</link> *plugin,
23
<link linkend="RBShell">RBShell</link> *shell);
24
<link linkend="GtkWidget">GtkWidget</link> * (<link linkend="RBPluginWidgetFunc">*RBPluginWidgetFunc</link>) (<link linkend="RBPlugin">RBPlugin</link> *plugin);
25
<link linkend="gboolean">gboolean</link> (<link linkend="RBPluginBooleanFunc">*RBPluginBooleanFunc</link>) (<link linkend="RBPlugin">RBPlugin</link> *plugin);
26
<link linkend="void">void</link> <link linkend="rb-plugin-activate">rb_plugin_activate</link> (<link linkend="RBPlugin">RBPlugin</link> *plugin,
27
<link linkend="RBShell">RBShell</link> *shell);
28
<link linkend="void">void</link> <link linkend="rb-plugin-deactivate">rb_plugin_deactivate</link> (<link linkend="RBPlugin">RBPlugin</link> *plugin,
29
<link linkend="RBShell">RBShell</link> *shell);
30
<link linkend="gboolean">gboolean</link> <link linkend="rb-plugin-is-configurable">rb_plugin_is_configurable</link> (<link linkend="RBPlugin">RBPlugin</link> *plugin);
31
<link linkend="GtkWidget">GtkWidget</link> * <link linkend="rb-plugin-create-configure-dialog">rb_plugin_create_configure_dialog</link> (<link linkend="RBPlugin">RBPlugin</link> *plugin);
32
<link linkend="char">char</link> * <link linkend="rb-plugin-find-file">rb_plugin_find_file</link> (<link linkend="RBPlugin">RBPlugin</link> *plugin,
33
const <link linkend="char">char</link> *file);
34
<link linkend="GList">GList</link> * <link linkend="rb-get-plugin-paths">rb_get_plugin_paths</link> (void);
35
#define <link linkend="RB-PLUGIN-REGISTER--CAPS">RB_PLUGIN_REGISTER</link> (PluginName, plugin_name)
36
#define <link linkend="RB-PLUGIN-REGISTER-TYPE--CAPS">RB_PLUGIN_REGISTER_TYPE</link> (type_name)
37
#define <link linkend="RB-PLUGIN-DEFINE-TYPE--CAPS">RB_PLUGIN_DEFINE_TYPE</link> (TypeName, type_name, TYPE_PARENT)
41
<refsect1 id="RBPlugin.object-hierarchy" role="object_hierarchy">
42
<title role="object_hierarchy.title">Object Hierarchy</title>
44
<link linkend="GObject">GObject</link>
53
<refsect1 id="RBPlugin.properties" role="properties">
54
<title role="properties.title">Properties</title>
56
"<link linkend="RBPlugin--name">name</link>" <link linkend="gchar">gchar</link>* : Read / Write
62
<refsect1 id="RBPlugin.description" role="desc">
63
<title role="desc.title">Description</title>
65
This is the base class for all plugins. It provides methods called
66
when activating, deactivating, and configuring plugins.</para>
71
<refsect1 id="RBPlugin.details" role="details">
72
<title role="details.title">Details</title>
73
<refsect2 id="RBPlugin-struct" role="struct">
74
<title>RBPlugin</title>
75
<indexterm zone="RBPlugin-struct"><primary sortas="RBPlugin">RBPlugin</primary></indexterm><programlisting>typedef struct _RBPlugin RBPlugin;</programlisting>
78
<refsect2 id="RBPluginClass" role="struct">
79
<title>RBPluginClass</title>
80
<indexterm zone="RBPluginClass"><primary sortas="RBPluginClass">RBPluginClass</primary></indexterm><programlisting>typedef struct {
81
GObjectClass parent_class;
83
/* Virtual public methods */
85
RBPluginActivationFunc activate;
86
RBPluginActivationFunc deactivate;
87
RBPluginWidgetFunc create_configure_dialog;
89
/* Plugins should not override this, it's handled automatically by
91
RBPluginBooleanFunc is_configurable;
96
<refsect2 id="RBPluginActivationFunc" role="function">
97
<title>RBPluginActivationFunc ()</title>
98
<indexterm zone="RBPluginActivationFunc"><primary sortas="RBPluginActivationFunc">RBPluginActivationFunc</primary></indexterm><programlisting><link linkend="void">void</link> (*RBPluginActivationFunc) (<link linkend="RBPlugin">RBPlugin</link> *plugin,
99
<link linkend="RBShell">RBShell</link> *shell);</programlisting>
101
Typedef for plugin activation and deactivation functions.
102
These functions include the <link linkend="RBShell"><type>RBShell</type></link> as an argument to allow
103
the plugin to locate other parts of Rhythmbox.</para>
105
</para><variablelist role="params">
106
<varlistentry><term><parameter>plugin</parameter> :</term>
107
<listitem><simpara> the <link linkend="RBPlugin"><type>RBPlugin</type></link>
108
</simpara></listitem></varlistentry>
109
<varlistentry><term><parameter>shell</parameter> :</term>
110
<listitem><simpara> the <link linkend="RBShell"><type>RBShell</type></link>
111
</simpara></listitem></varlistentry>
112
</variablelist></refsect2>
113
<refsect2 id="RBPluginWidgetFunc" role="function">
114
<title>RBPluginWidgetFunc ()</title>
115
<indexterm zone="RBPluginWidgetFunc"><primary sortas="RBPluginWidgetFunc">RBPluginWidgetFunc</primary></indexterm><programlisting><link linkend="GtkWidget">GtkWidget</link> * (*RBPluginWidgetFunc) (<link linkend="RBPlugin">RBPlugin</link> *plugin);</programlisting>
117
Typedef for plugin configuration functions.</para>
119
</para><variablelist role="params">
120
<varlistentry><term><parameter>plugin</parameter> :</term>
121
<listitem><simpara> the <link linkend="RBPlugin"><type>RBPlugin</type></link>
122
</simpara></listitem></varlistentry>
123
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> a <link linkend="GtkWidget"><type>GtkWidget</type></link> for the plugin
124
</simpara></listitem></varlistentry>
125
</variablelist></refsect2>
126
<refsect2 id="RBPluginBooleanFunc" role="function">
127
<title>RBPluginBooleanFunc ()</title>
128
<indexterm zone="RBPluginBooleanFunc"><primary sortas="RBPluginBooleanFunc">RBPluginBooleanFunc</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> (*RBPluginBooleanFunc) (<link linkend="RBPlugin">RBPlugin</link> *plugin);</programlisting>
130
Typedef for plugin functions that return a gboolean.</para>
132
</para><variablelist role="params">
133
<varlistentry><term><parameter>plugin</parameter> :</term>
134
<listitem><simpara> the <link linkend="RBPlugin"><type>RBPlugin</type></link>
135
</simpara></listitem></varlistentry>
136
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> something
137
</simpara></listitem></varlistentry>
138
</variablelist></refsect2>
139
<refsect2 id="rb-plugin-activate" role="function">
140
<title>rb_plugin_activate ()</title>
141
<indexterm zone="rb-plugin-activate"><primary sortas="rb_plugin_activate">rb_plugin_activate</primary></indexterm><programlisting><link linkend="void">void</link> rb_plugin_activate (<link linkend="RBPlugin">RBPlugin</link> *plugin,
142
<link linkend="RBShell">RBShell</link> *shell);</programlisting>
144
Called when a plugin is being activated, either on startup or when
145
enabled in the plugin configuration dialog.</para>
147
</para><variablelist role="params">
148
<varlistentry><term><parameter>plugin</parameter> :</term>
149
<listitem><simpara> the <link linkend="RBPlugin"><type>RBPlugin</type></link> being activated
150
</simpara></listitem></varlistentry>
151
<varlistentry><term><parameter>shell</parameter> :</term>
152
<listitem><simpara> the <link linkend="RBShell"><type>RBShell</type></link>
153
</simpara></listitem></varlistentry>
154
</variablelist></refsect2>
155
<refsect2 id="rb-plugin-deactivate" role="function">
156
<title>rb_plugin_deactivate ()</title>
157
<indexterm zone="rb-plugin-deactivate"><primary sortas="rb_plugin_deactivate">rb_plugin_deactivate</primary></indexterm><programlisting><link linkend="void">void</link> rb_plugin_deactivate (<link linkend="RBPlugin">RBPlugin</link> *plugin,
158
<link linkend="RBShell">RBShell</link> *shell);</programlisting>
160
Called when a plugin is being deactivated, either on shutdown or
161
when disabled in the plugin configuration dialog.
164
Note that plugin instances are never destroyed, so the same plugin
165
instance can be deactivated and then reactivated. After deactivation,
166
the plugin must be in a state where it can be reactivated.</para>
168
</para><variablelist role="params">
169
<varlistentry><term><parameter>plugin</parameter> :</term>
170
<listitem><simpara> the <link linkend="RBPlugin"><type>RBPlugin</type></link> being deactivated
171
</simpara></listitem></varlistentry>
172
<varlistentry><term><parameter>shell</parameter> :</term>
173
<listitem><simpara> the <link linkend="RBShell"><type>RBShell</type></link>
174
</simpara></listitem></varlistentry>
175
</variablelist></refsect2>
176
<refsect2 id="rb-plugin-is-configurable" role="function">
177
<title>rb_plugin_is_configurable ()</title>
178
<indexterm zone="rb-plugin-is-configurable"><primary sortas="rb_plugin_is_configurable">rb_plugin_is_configurable</primary></indexterm><programlisting><link linkend="gboolean">gboolean</link> rb_plugin_is_configurable (<link linkend="RBPlugin">RBPlugin</link> *plugin);</programlisting>
180
Determines whether the plugin is configurable.</para>
182
</para><variablelist role="params">
183
<varlistentry><term><parameter>plugin</parameter> :</term>
184
<listitem><simpara> the <link linkend="RBPlugin"><type>RBPlugin</type></link>
185
</simpara></listitem></varlistentry>
186
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="TRUE--CAPS"><literal>TRUE</literal></link> if configurable
187
</simpara></listitem></varlistentry>
188
</variablelist></refsect2>
189
<refsect2 id="rb-plugin-create-configure-dialog" role="function">
190
<title>rb_plugin_create_configure_dialog ()</title>
191
<indexterm zone="rb-plugin-create-configure-dialog"><primary sortas="rb_plugin_create_configure_dialog">rb_plugin_create_configure_dialog</primary></indexterm><programlisting><link linkend="GtkWidget">GtkWidget</link> * rb_plugin_create_configure_dialog (<link linkend="RBPlugin">RBPlugin</link> *plugin);</programlisting>
193
Creates a configuration dialog for <parameter>plugin</parameter>. The plugin can store
194
the dialog instance the first time it is created and just return it
197
</para><variablelist role="params">
198
<varlistentry><term><parameter>plugin</parameter> :</term>
199
<listitem><simpara> the <link linkend="RBPlugin"><type>RBPlugin</type></link>
200
</simpara></listitem></varlistentry>
201
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> configuration widget for <parameter>plugin</parameter>
202
</simpara></listitem></varlistentry>
203
</variablelist></refsect2>
204
<refsect2 id="rb-plugin-find-file" role="function">
205
<title>rb_plugin_find_file ()</title>
206
<indexterm zone="rb-plugin-find-file"><primary sortas="rb_plugin_find_file">rb_plugin_find_file</primary></indexterm><programlisting><link linkend="char">char</link> * rb_plugin_find_file (<link linkend="RBPlugin">RBPlugin</link> *plugin,
207
const <link linkend="char">char</link> *file);</programlisting>
209
Searches for <parameter>file</parameter> in the install directory for <parameter>plugin</parameter>.
210
Plugins should use this to locate any data files they install.</para>
212
</para><variablelist role="params">
213
<varlistentry><term><parameter>plugin</parameter> :</term>
214
<listitem><simpara> the <link linkend="RBPlugin"><type>RBPlugin</type></link>
215
</simpara></listitem></varlistentry>
216
<varlistentry><term><parameter>file</parameter> :</term>
217
<listitem><simpara> file to search for
218
</simpara></listitem></varlistentry>
219
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> path to the file, must be freed by caller.
220
</simpara></listitem></varlistentry>
221
</variablelist></refsect2>
222
<refsect2 id="rb-get-plugin-paths" role="function">
223
<title>rb_get_plugin_paths ()</title>
224
<indexterm zone="rb-get-plugin-paths"><primary sortas="rb_get_plugin_paths">rb_get_plugin_paths</primary></indexterm><programlisting><link linkend="GList">GList</link> * rb_get_plugin_paths (void);</programlisting>
226
Returns a list containing the paths to search for plugins.</para>
228
</para><variablelist role="params">
229
<varlistentry><term><emphasis>Returns</emphasis> :</term><listitem><simpara> <link linkend="GList"><type>GList</type></link> of paths, must be freed by caller
230
</simpara></listitem></varlistentry>
231
</variablelist></refsect2>
232
<refsect2 id="RB-PLUGIN-REGISTER--CAPS" role="macro">
233
<title>RB_PLUGIN_REGISTER()</title>
234
<indexterm zone="RB-PLUGIN-REGISTER--CAPS"><primary sortas="RB_PLUGIN_REGISTER">RB_PLUGIN_REGISTER</primary></indexterm><programlisting>#define RB_PLUGIN_REGISTER(PluginName, plugin_name)</programlisting>
236
Registers a Rhythmbox plugin type. Use this instead of G_DEFINE_TYPE
237
(or similar) for RBPlugin implementations.</para>
239
</para><variablelist role="params">
240
<varlistentry><term><parameter>PluginName</parameter> :</term>
241
<listitem><simpara> plugin name in CamelCase
242
</simpara></listitem></varlistentry>
243
<varlistentry><term><parameter>plugin_name</parameter> :</term>
244
<listitem><simpara> plugin name in lowercase with words separated by '_'
245
</simpara></listitem></varlistentry>
246
</variablelist></refsect2>
247
<refsect2 id="RB-PLUGIN-REGISTER-TYPE--CAPS" role="macro">
248
<title>RB_PLUGIN_REGISTER_TYPE()</title>
249
<indexterm zone="RB-PLUGIN-REGISTER-TYPE--CAPS"><primary sortas="RB_PLUGIN_REGISTER_TYPE">RB_PLUGIN_REGISTER_TYPE</primary></indexterm><programlisting>#define RB_PLUGIN_REGISTER_TYPE(type_name)</programlisting>
251
Registers additional types for the plugin. This should be called in
252
the plugin class_init function for types besides the plugin itself that
253
need to be registered with the GObject type system.</para>
255
</para><variablelist role="params">
256
<varlistentry><term><parameter>type_name</parameter> :</term>
257
<listitem><simpara> CamelCase name of the type to register
258
</simpara></listitem></varlistentry>
259
</variablelist></refsect2>
260
<refsect2 id="RB-PLUGIN-DEFINE-TYPE--CAPS" role="macro">
261
<title>RB_PLUGIN_DEFINE_TYPE()</title>
262
<indexterm zone="RB-PLUGIN-DEFINE-TYPE--CAPS"><primary sortas="RB_PLUGIN_DEFINE_TYPE">RB_PLUGIN_DEFINE_TYPE</primary></indexterm><programlisting>#define RB_PLUGIN_DEFINE_TYPE(TypeName, type_name, TYPE_PARENT)</programlisting>
264
Defines additional types for the plugin. This should be used instead
265
of G_DEFINE_TYPE for additional object types that need to be registered
266
with the GObject type system.</para>
268
</para><variablelist role="params">
269
<varlistentry><term><parameter>TypeName</parameter> :</term>
270
<listitem><simpara> type name in CamelCase
271
</simpara></listitem></varlistentry>
272
<varlistentry><term><parameter>type_name</parameter> :</term>
273
<listitem><simpara> type name in lowercase with words separated by '_'
274
</simpara></listitem></varlistentry>
275
<varlistentry><term><parameter>TYPE_PARENT</parameter> :</term>
276
<listitem><simpara> GType macro for the parent type
277
</simpara></listitem></varlistentry>
278
</variablelist></refsect2>
281
<refsect1 id="RBPlugin.property-details" role="property_details">
282
<title role="property_details.title">Property Details</title>
283
<refsect2 id="RBPlugin--name" role="property"><title>The <literal>"name"</literal> property</title>
284
<indexterm zone="RBPlugin--name"><primary sortas="RBPlugin:name">RBPlugin:name</primary></indexterm><programlisting> "name" <link linkend="gchar">gchar</link>* : Read / Write</programlisting>
285
<para>name.</para><para>Default value: NULL</para>