grim/purple-objects-docbook

8aabfec5672d
Parents c87df7294011
Children
updated the plugins page to reflect my suggestion for gplugin
--- a/graphs/plugin-info.class Sat Jun 01 04:43:05 2013 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,54 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<class name="PurplePluginInfo" type="boxed">
- <properties>
- <property name="abi_version" type="abi_version" scope="public"/>
- <property name="name" type="gchar *" scope="public"/>
- <property name="version" type="gchar *" scope="public"/>
- <property name="summary" type="gchar *" scope="public"/>
- <property name="description" type="gchar *" scope="public"/>
- <property name="author" type="gchar *" scope="public"/>
- <property name="website" type="gchar *" scope="public"/>
- </properties>
- <methods>
- <method name="purple_plugin_info_new" type="PurplePluginInfo *" scope="public">
- <argument name="abi_version" type="guint32"/>
- <argument name="name" type="const gchar *"/>
- <argument name="version" type="const gchar *"/>
- <argument name="summary" type="const gchar *"/>
- <argument name="description" type="const gchar *"/>
- <argument name="author" type="const gchar *"/>
- <argument name="website" type="const gchar *"/>
- </method>
- <method name="purple_plugin_info_copy" type="PurplePluginInfo *" scope="public">
- <argument name="info" type="const PurplePluginInfo *"/>
- </method>
- <method name="purple_plugin_info_free" type="void" scope="public">
- <argument name="info" type="PurplePluginInfo *"/>
- </method>
- <method name="purple_plugin_info_get_abi_version" type="guint32" scope="public">
- <argument name="info" type="const PurplePluginInfo *"/>
- </method>
- <method name="purple_plugin_info_get_name" type="const gchar *" scope="public">
- <argument name="info" type="const PurplePluginInfo *"/>
- </method>
- <method name="purple_plugin_info_get_version" type="const gchar *" scope="public">
- <argument name="info" type="const PurplePluginInfo *"/>
- </method>
- <method name="purple_plugin_info_get_summary" type="const gchar *" scope="public">
- <argument name="info" type="const PurplePluginInfo *"/>
- </method>
- <method name="purple_plugin_info_get_description" type="const gchar *" scope="public">
- <argument name="info" type="const PurplePluginInfo *"/>
- </method>
- <method name="purple_plugin_info_get_author" type="const gchar *" scope="public">
- <argument name="info" type="const PurplePluginInfo *"/>
- </method>
- <method name="purple_plugin_info_get_website" type="const gchar *" scope="public">
- <argument name="info" type="const PurplePluginInfo *"/>
- </method>
- </methods>
-</class>
-
-<!--
- vi: syntax=xml
--->
--- a/graphs/plugin-loader.class Sat Jun 01 04:43:05 2013 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<class name="PurplePluginLoader" type="interface">
- <methods>
- <method name="purple_plugin_loader_get_supported_extensions" type="GList *" scope="public">
- <argument name="loader" type="GfPluginLoader *"/>
- </method>
- <method name="purple_plugin_loader_query_plugin" type="PurplePluginInfo *" scope="public">
- <argument name="loader" type="PurplePluginLoader *"/>
- <argument name="filename" type="const gchar *"/>
- <argument name="error" type="GError **"/>
- </method>
- <method name="purple_plugin_loader_load_plugin" type="PurplePlugin *" scope="public">
- <argument name="loader" type="PurplePluginLoader *"/>
- <argument name="filename" type="const gchar *"/>
- <argument name="error" type="GError **"/>
- </method>
- <method name="purple_plugin_loader_unload_plugin" type="gboolean" scope="public">
- <argument name="loader" type="PurplePluginLoader *"/>
- <argument name="plugin" type="PurplePlugin *"/>
- <argument name="error" type="GError **"/>
- </method>
- </methods>
-</class>
-<!--
- vi: syntax=xml
--->
--- a/graphs/plugin-loaders.hierarchy Sat Jun 01 04:43:05 2013 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<hierarchy>
- <objects>
- <object name="GObject" type="abstract"/>
- <object name="GInterface" type="interface"/>
-
- <object name="PurpleObject" type="abstract"/>
-
- <object name="PurplePluginLoader" type="interface"/>
-
- <object name="PurpleNativePluginLoader" type="concrete"/>
- <object name="PurplePerlPluginLoader" type="concrete"/>
- <object name="PurpleTCLPluginLoader" type="concrete"/>
- <object name="PurpleMonoPluginLoader" type="concrete"/>
- </objects>
- <relations>
- <relation start="PurpleObject" end="GObject" type="is-a"/>
- <relation start="PurplePluginLoader" end="GInterface" type="is-a"/>
-
- <relation start="PurpleNativePluginLoader" end="PurpleObject" type="is-a"/>
- <relation start="PurpleNativePluginLoader" end="PurplePluginLoader" type="implements"/>
-
- <relation start="PurplePerlPluginLoader" end="PurpleObject" type="is-a"/>
- <relation start="PurplePerlPluginLoader" end="PurplePluginLoader" type="implements"/>
-
- <relation start="PurpleTCLPluginLoader" end="PurpleObject" type="is-a"/>
- <relation start="PurpleTCLPluginLoader" end="PurplePluginLoader" type="implements"/>
-
- <relation start="PurpleMonoPluginLoader" end="PurpleObject" type="is-a"/>
- <relation start="PurpleMonoPluginLoader" end="PurplePluginLoader" type="implements"/>
- </relations>
-</hierarchy>
-<!--
- vi: syntax=xml
--->
--- a/graphs/plugin-state.enum Sat Jun 01 04:43:05 2013 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<enumeration name="PurplePluginState">
- <item name="PURPLE_PLUGIN_STATE_UNKNOWN" value="-1"/>
- <item name="PURPLE_PLUGIN_STATE_ERROR" value="0"/>
- <item name="PURPLE_PLUGIN_STATE_LOADED"/>
- <item name="PURPLE_PLUGIN_STATE_LOAD_FAILED"/>
- <item name="PURPLE_PLUGIN_STATE_NOT_LOADED"/>
- <item name="PURPLE_PLUGIN_STATES"/>
-</enumeration>
--- a/graphs/plugin.class Sat Jun 01 04:43:05 2013 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<class name="PurplePlugin" type="abstract">
- <properties>
- <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">
- <argument name="plugin" type="const PurplePlugin *"/>
- </method>
- <method name="purple_plugin_get_filename" type="const gchar *" scope="public">
- <argument name="plugin" type="const PurplePlugin *"/>
- </method>
- <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>
-
-<!--
- vi: syntax=xml
--->
--- a/graphs/plugins.hierarchy Sat Jun 01 04:43:05 2013 -0500
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,40 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<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>
-<!--
- vi: syntax=xml
--->
--- a/xml/plugins.xml Sat Jun 01 04:43:05 2013 -0500
+++ b/xml/plugins.xml Sat Jun 01 04:45:36 2013 -0500
@@ -5,53 +5,9 @@
<title>Plugins</title>
<para>
- Plugins won't change too much when it comes to plugin developers, but
- theres a bit that will change in the backend to make better use of the
- type system.
- </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.
+ My original proposal for plugins has been built into a separate library
+ named <ulink url="https://bitbucket.org/rw_grim/gplugin">GPlugin</ulink>
+ that I think we should use now.
</para>
-
- <figure id="plugin-hierarchy">
- <title>Plugin Object Hierarchy</title>
-
- <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>
-
- <graphic fileref="graphs/plugin.png"/>
- </figure>
-
- <figure id="plugin-info">
- <title>Plugin Info Struct</title>
-
- <graphic fileref="graphs/plugin-info.png"/>
- </figure>
-
- <figure id="plugin-state">
- <title>Plugin State Enum</title>
-
- <graphic fileref="graphs/plugin-state.png"/>
- </figure>
</chapter>