Add support to new callback class
[python-purple] / plugin.pyx
1 #
2 #  Copyright (c) 2008 INdT - Instituto Nokia de Tecnologia
3 #
4 #  This file is part of python-purple.
5 #
6 #  python-purple is free software: you can redistribute it and/or modify
7 #  it under the terms of the GNU General Public License as published by
8 #  the Free Software Foundation, either version 3 of the License, or
9 #  (at your option) any later version.
10 #
11 #  python-purple is distributed in the hope that it will be useful,
12 #  but WITHOUT ANY WARRANTY; without even the implied warranty of
13 #  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 #  GNU General Public License for more details.
15 #
16 #  You should have received a copy of the GNU General Public License
17 #  along with this program.  If not, see <http://www.gnu.org/licenses/>.
18 #
19
20 cimport purple
21
22 cdef class Plugin:
23     cdef plugin.PurplePlugin *c_plugin
24     cdef prpl.PurplePluginProtocolInfo *c_prpl_info
25     cdef plugin.PurplePluginInfo *c_plugin_info
26
27     def __init__(self, id):
28         self.c_plugin = plugin.c_purple_plugins_find_with_id(id)
29         self.c_prpl_info = plugin.c_PURPLE_PLUGIN_PROTOCOL_INFO(self.c_plugin)
30
31     def get_name(self):
32         return self.c_plugin.info.name
33
34     def get_id(self):
35         return self.c_plugin.info.id
36
37
38 cdef class Plugins:
39
40     cdef protocols
41
42     def __init__(self):
43         self.protocols = None
44
45     def get_protocols(self):
46         if self.protocols:
47             return self.protocols
48         cdef glib.GList *iter
49         cdef plugin.PurplePlugin *pp
50         protocols = []
51         iter = plugin.c_purple_plugins_get_protocols()
52         while iter:
53             pp = <plugin.PurplePlugin*> iter.data
54             if pp.info and pp.info.name:
55                 p = Plugin(pp.info.id)
56                 if p:
57                     protocols += [p]
58             iter = iter.next
59         glib.g_list_free(iter)
60         self.protocols = protocols
61         return protocols