grim/purple-objects-docbook

69e3ee38959c
Parents 6fe3c31683d2
Children b58c3af1700c
a bit more on the plugins and some tweaks to the graphs
--- a/graphs/plugin.class Sun May 03 09:10:32 2009 -0400
+++ b/graphs/plugin.class Sun May 03 22:48:08 2009 -0500
@@ -4,6 +4,7 @@
<property name="state" type="PurplePluginState" scope="private"/>
<property name="filename" type="gchar *" scope="private"/>
<property name="info" type="PurplePluginInfo" scope="private"/>
+ <property name="priority" type="gint" scope="private"/>
</properties>
<methods>
<method name="purple_plugin_get_state" type="PurplePluginState" scope="public">
@@ -15,6 +16,9 @@
<method name="purple_plugin_get_info" type="PurplePluginInfo *" scope="public">
<argument name="plugin" type="const PurplePlugin *"/>
</method>
+ <method name="purple_plugin_get_priority" type="gint" scope="public">
+ <argument name="plugin" type="const PurplePlugin *"/>
+ </method>
</methods>
</class>
--- a/graphs/plugins.hierarchy Sun May 03 09:10:32 2009 -0400
+++ b/graphs/plugins.hierarchy Sun May 03 22:48:08 2009 -0500
@@ -2,22 +2,37 @@
<hierarchy>
<objects>
<object name="GObject" type="abstract"/>
+ <object name="GInterface" type="interface"/>
+ <object name="GTypePlugin" type="interface"/>
+
<object name="PurpleObject" type="abstract"/>
<object name="PurplePlugin" type="abstract"/>
+
<object name="PurplePluginInfo" type="boxed"/>
+ <object name="PurplePluginActionIface" type="interface"/>
+
<object name="PurpleNativePlugin" type="concrete"/>
<object name="PurplePerlPlugin" type="concrete"/>
<object name="PurpleTCLPlugin" type="concrete"/>
<object name="PurpleMonoPlugin" type="concrete"/>
</objects>
<relations>
+ <relation start="GTypePlugin" end="GInterface" type="is-a"/>
+
<relation start="PurpleObject" end="GObject" type="is-a"/>
<relation start="PurplePlugin" end="PurpleObject" type="is-a"/>
+
<relation start="PurpleNativePlugin" end="PurplePlugin" type="is-a"/>
+ <relation start="PurpleNativePlugin" end="GTypePlugin" type="implements"/>
+
<relation start="PurplePerlPlugin" end="PurplePlugin" type="is-a"/>
+
<relation start="PurpleTCLPlugin" end="PurplePlugin" type="is-a"/>
+
<relation start="PurpleMonoPlugin" end="PurplePlugin" type="is-a"/>
+
<relation start="PurplePlugin" end="PurplePluginInfo" type="has-a"/>
+ <relation start="PurplePluginActionIface" end="GInterface" type="is-a"/>
</relations>
</hierarchy>
<!--
--- a/xml/plugins.xml Sun May 03 09:10:32 2009 -0400
+++ b/xml/plugins.xml Sun May 03 22:48:08 2009 -0500
@@ -11,7 +11,13 @@
</para>
<para>
-
+ The obvious changes in <xref linkend="plugin-hierarchy"/> is that
+ PurplePlugin is now an abstract class and there is a new
+ PurpleNativePlugin class. These changes have been made to avoid having
+ to shoehorn the Perl, TCL, and Mono plugins into the C centric
+ PurplePlugin that we currently have. The PurplePluginLoader's will do
+ the actual work of translating between the purple C/GObject API and the
+ language to which the loader is implementing.
</para>
<figure id="plugin-hierarchy">
@@ -20,6 +26,16 @@
<graphic fileref="graphs/plugins.png"/>
</figure>
+ <para>
+ Theres a noticable size difference in the PurplePlugin shown in
+ <xref linkend="plugin-class"/>. All of the meta information has been
+ moved to the new boxed type PurplePluginInfo. The versioning info has
+ been moved to be loader dependent as well. PurplePluginType is thrown
+ out since we can the use of interfaces for PurpleProtocolPlugin,
+ PurplePluginLoader, and so on, are all interfaces and can be checked
+ by the usual GObject methods.
+ </para>
+
<figure id="plugin-class">
<title>Plugin Class</title>