Adding function get_all to Plugin class
[python-purple] / plugin.pyx
index 020fde1..6218227 100644 (file)
 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #
 
-cimport prpl
 cimport purple
 
-
 cdef class Plugin:
     cdef plugin.PurplePlugin *c_plugin
     cdef prpl.PurplePluginProtocolInfo *c_prpl_info
@@ -36,6 +34,22 @@ cdef class Plugin:
     def get_id(self):
         return self.c_plugin.info.id
 
+    def get_all(self):
+        ''' @return A string list of protocols' (id, name) '''
+        '''    [('prpl-jabber', 'XMPP'), ('foo', 'MSN'), ...] '''
+        cdef glib.GList *iter
+        cdef plugin.PurplePlugin *pp
+
+        protocols = []
+
+        iter = plugin.c_purple_plugins_get_protocols()
+        while iter:
+            pp = <plugin.PurplePlugin*> iter.data
+            if pp.info and pp.info.name:
+                protocols.append((pp.info.id, pp.info.name))
+            iter = iter.next
+
+        return protocols
 
 cdef class Plugins:
 
@@ -58,5 +72,6 @@ cdef class Plugins:
                 if p:
                     protocols += [p]
             iter = iter.next
+        glib.g_list_free(iter)
         self.protocols = protocols
         return protocols