Mercurial > libervia-backend
diff frontends/primitivus/contact_list.py @ 119:ded2431cea5a
Primitivus: chat window / text sending.
Primitivus has now the most basics features \o/
- core: new getVersion method
- primitivus: new debug key (C-d), only work if SàT is in dev version (D in version)
- quick_app: new post_init method, used for automatique task like auto-plug
- primitivus: lists now use genericList (Box) or List (Flow)
- primitivus: List now manage correctly its size
- primitivus: new FocusFrame widget which manage focus changing with 'tab'
- primitivus: advancedEdit now manage 'click' signal
- primitivus: contactList now manager 'change' and 'click' signals
- primitivus: Chat window now working
author | Goffi <goffi@goffi.org> |
---|---|
date | Mon, 05 Jul 2010 19:13:36 +0800 |
parents | 7c482ecac0ff |
children | 1ca5f254ce41 |
line wrap: on
line diff
--- a/frontends/primitivus/contact_list.py Sat Jul 03 13:56:44 2010 +0800 +++ b/frontends/primitivus/contact_list.py Mon Jul 05 19:13:36 2010 +0800 @@ -25,12 +25,12 @@ class ContactList(urwid.WidgetWrap, QuickContactList): + signals = ['click','change'] - def __init__(self, host, CM): - QuickContactList.__init__(self, CM) + def __init__(self, host, CM, on_click=None, on_change=None, user_data=None): self.host = host - self.list_wid = List([], style=['single'], align='left') + self.list_wid = List([], style=['single','no_first_select'], align='left', on_click=self.__contactClicked, on_change=on_change) #we now build the widget body_content = urwid.SimpleListWalker([self.list_wid]) @@ -38,21 +38,35 @@ frame = urwid.Frame(frame_body,urwid.AttrMap(urwid.Text(_("Contacts"),align='center'),'title')) self.main_widget = urwid.LineBox(frame) urwid.WidgetWrap.__init__(self, self.main_widget) + if on_click: + urwid.connect_signal(self, 'click', on_click, user_data) + if on_change: + urwid.connect_signal(self, 'change', on_change, user_data) + QuickContactList.__init__(self, CM) + + def __contactClicked(self, list_wid): + self._emit('click') + + def get_contact(self): + """Return contact currently selected""" + return self.list_wid.getSelectedValue() def clear_contacts(self): """clear all the contact list""" self.list_wid.changeValues([]) def replace(self, jid, groups=None): - """add a contact to the list if doesn't exist, else update it""" - contacts = self.list_wid.getValues() - if jid.short not in contacts: - contacts.append(jid.short) - contacts.sort() - self.list_wid.changeValues(contacts) + """add a contact to the list if doesn't exist, else update it""" + contacts = self.list_wid.getAllValues() + if jid.short not in contacts: + contacts.append(jid.short) + contacts.sort() + self.list_wid.changeValues(contacts) + self._emit('change') def disconnect(self, jid): """mark a contact disconnected""" + #self.host.debug() self.remove(jid) def remove(self, jid):