Adding function get_options to Plugin class
[python-purple] / buddy.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 Buddy:
23     """ Buddy class """
24     cdef blist.PurpleBuddy *c_buddy
25     cdef Account __acc
26
27     def __init__(self):
28         self.c_buddy = NULL
29
30     def __get_account(self):
31         return self.__acc
32     def __set_account(self, acc):
33         self.__acc = acc
34     account = property(__get_account, __set_account)
35
36     def __get_alias(self):
37         if self.c_buddy:
38             return <char *>blist.c_purple_buddy_get_alias_only(self.c_buddy)
39         else:
40             return None
41     alias = property(__get_alias)
42
43     def __get_name(self):
44         if self.c_buddy:
45             return <char *>blist.c_purple_buddy_get_name(self.c_buddy)
46         else:
47             return None
48     name = property(__get_name)
49
50     def __get_online(self): # FIXME
51         name = self.name
52         self.c_buddy = blist.c_purple_find_buddy(self.__acc.c_account, name)
53         return status.c_purple_presence_is_online(blist.c_purple_buddy_get_presence(self.c_buddy))
54     online = property(__get_online)
55
56     def new_buddy(self, acc, name, alias):
57         self.__acc = acc
58         cdef char *c_name = NULL
59         cdef char *c_alias = NULL
60
61         if name is not None:
62             c_name = name
63
64         if alias is not None:
65             c_alias = alias
66
67         self.c_buddy = blist.c_purple_buddy_new(<account.PurpleAccount *>\
68                 self.__acc.c_account, c_name, c_alias)