020fde16c2ef0c54e5d426d5a6cddd27f4fcdfb1
[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 prpl
21 cimport purple
22
23
24 cdef class Plugin:
25     cdef plugin.PurplePlugin *c_plugin
26     cdef prpl.PurplePluginProtocolInfo *c_prpl_info
27     cdef plugin.PurplePluginInfo *c_plugin_info
28
29     def __init__(self, id):
30         self.c_plugin = plugin.c_purple_plugins_find_with_id(id)
31         self.c_prpl_info = plugin.c_PURPLE_PLUGIN_PROTOCOL_INFO(self.c_plugin)
32
33     def get_name(self):
34         return self.c_plugin.info.name
35
36     def get_id(self):
37         return self.c_plugin.info.id
38
39
40 cdef class Plugins:
41
42     cdef protocols
43
44     def __init__(self):
45         self.protocols = None
46
47     def get_protocols(self):
48         if self.protocols:
49             return self.protocols
50         cdef glib.GList *iter
51         cdef plugin.PurplePlugin *pp
52         protocols = []
53         iter = plugin.c_purple_plugins_get_protocols()
54         while iter:
55             pp = <plugin.PurplePlugin*> iter.data
56             if pp.info and pp.info.name:
57                 p = Plugin(pp.info.id)
58                 if p:
59                     protocols += [p]
60             iter = iter.next
61         self.protocols = protocols
62         return protocols