Mercurial > libervia-backend
comparison frontends/primitivus/contact_list.py @ 222:3198bfd66daa
primitivus: refactoring to use urwid-satext which is now a separate project
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 28 Dec 2010 23:10:13 +0100 |
parents | 9e7bc7f09221 |
children |
comparison
equal
deleted
inserted
replaced
221:96186f36d8cb | 222:3198bfd66daa |
---|---|
20 """ | 20 """ |
21 | 21 |
22 import urwid | 22 import urwid |
23 from quick_frontend.quick_contact_list import QuickContactList | 23 from quick_frontend.quick_contact_list import QuickContactList |
24 from tools.jid import JID | 24 from tools.jid import JID |
25 import custom_widgets | 25 from urwid_satext import sat_widgets |
26 | 26 |
27 | 27 |
28 class ContactList(urwid.WidgetWrap, QuickContactList): | 28 class ContactList(urwid.WidgetWrap, QuickContactList): |
29 signals = ['click','change'] | 29 signals = ['click','change'] |
30 | 30 |
34 self.groups={} | 34 self.groups={} |
35 self.alert_jid=set() | 35 self.alert_jid=set() |
36 | 36 |
37 #we now build the widget | 37 #we now build the widget |
38 self.frame = urwid.Frame(self.__buildList()) | 38 self.frame = urwid.Frame(self.__buildList()) |
39 self.main_widget = custom_widgets.LabelLine(self.frame, custom_widgets.SurroundedText(_("Contacts"))) | 39 self.main_widget = sat_widgets.LabelLine(self.frame, sat_widgets.SurroundedText(_("Contacts"))) |
40 urwid.WidgetWrap.__init__(self, self.main_widget) | 40 urwid.WidgetWrap.__init__(self, self.main_widget) |
41 if on_click: | 41 if on_click: |
42 urwid.connect_signal(self, 'click', on_click, user_data) | 42 urwid.connect_signal(self, 'click', on_click, user_data) |
43 if on_change: | 43 if on_change: |
44 urwid.connect_signal(self, 'change', on_change, user_data) | 44 urwid.connect_signal(self, 'change', on_change, user_data) |
73 self.setFocus(group_wid.getValue()) | 73 self.setFocus(group_wid.getValue()) |
74 | 74 |
75 def __contactClicked(self, contact_wid, selected): | 75 def __contactClicked(self, contact_wid, selected): |
76 self.selected = contact_wid.data | 76 self.selected = contact_wid.data |
77 for widget in self.frame.body.body: | 77 for widget in self.frame.body.body: |
78 if widget.__class__ == custom_widgets.SelectableText: | 78 if widget.__class__ == sat_widgets.SelectableText: |
79 widget.setState(widget.data == self.selected, invisible=True) | 79 widget.setState(widget.data == self.selected, invisible=True) |
80 if self.selected in self.alert_jid: | 80 if self.selected in self.alert_jid: |
81 self.alert_jid.remove(self.selected) | 81 self.alert_jid.remove(self.selected) |
82 self.frame.body = self.__buildList() | 82 self.frame.body = self.__buildList() |
83 self.host.redraw() | 83 self.host.redraw() |
93 jid=JID(contact) | 93 jid=JID(contact) |
94 name = self.CM.getAttr(jid,'name') | 94 name = self.CM.getAttr(jid,'name') |
95 nick = self.CM.getAttr(jid,'nick') | 95 nick = self.CM.getAttr(jid,'nick') |
96 display = nick or name or jid.node or jid.short | 96 display = nick or name or jid.node or jid.short |
97 header = '(*) ' if contact in self.alert_jid else '' | 97 header = '(*) ' if contact in self.alert_jid else '' |
98 widget = custom_widgets.SelectableText(('alert' if contact in self.alert_jid else 'default',display), | 98 widget = sat_widgets.SelectableText(('alert' if contact in self.alert_jid else 'default',display), |
99 selected = contact==self.selected, header=header) | 99 selected = contact==self.selected, header=header) |
100 widget.data = contact | 100 widget.data = contact |
101 content.append(widget) | 101 content.append(widget) |
102 urwid.connect_signal(widget, 'change', self.__contactClicked) | 102 urwid.connect_signal(widget, 'change', self.__contactClicked) |
103 | 103 |
108 group_keys.sort() | 108 group_keys.sort() |
109 for key in group_keys: | 109 for key in group_keys: |
110 unfolded = self.groups[key][0] | 110 unfolded = self.groups[key][0] |
111 if key!=None: | 111 if key!=None: |
112 header = '[-]' if unfolded else '[+]' | 112 header = '[-]' if unfolded else '[+]' |
113 widget = custom_widgets.ClickableText(key,header=header+' ') | 113 widget = sat_widgets.ClickableText(key,header=header+' ') |
114 content.append(widget) | 114 content.append(widget) |
115 urwid.connect_signal(widget, 'click', self.__groupClicked) | 115 urwid.connect_signal(widget, 'click', self.__groupClicked) |
116 if unfolded: | 116 if unfolded: |
117 self.__buildContact(content, self.groups[key][1]) | 117 self.__buildContact(content, self.groups[key][1]) |
118 return urwid.ListBox(content) | 118 return urwid.ListBox(content) |
119 | 119 |
120 def unselectAll(self): | 120 def unselectAll(self): |
121 """Unselect all contacts""" | 121 """Unselect all contacts""" |
122 self.selected = None | 122 self.selected = None |
123 for widget in self.frame.body.body: | 123 for widget in self.frame.body.body: |
124 if widget.__class__ == custom_widgets.SelectableText: | 124 if widget.__class__ == sat_widgets.SelectableText: |
125 widget.setState(False, invisible=True) | 125 widget.setState(False, invisible=True) |
126 | 126 |
127 | 127 |
128 def get_contact(self): | 128 def get_contact(self): |
129 """Return contact currently selected""" | 129 """Return contact currently selected""" |