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"""