From ace647f9bc40f10127b57ff3b2b6ebcec9298d6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?St=C3=A9phane=20Bisinger?= Date: Fri, 29 May 2009 01:19:23 +0100 Subject: [PATCH] curses: Implemented initial Contact list navigation MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Stéphane Bisinger --- amsn2/gui/front_ends/curses/contact_list.py | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/amsn2/gui/front_ends/curses/contact_list.py b/amsn2/gui/front_ends/curses/contact_list.py index fef0e4d3..ea4afb31 100644 --- a/amsn2/gui/front_ends/curses/contact_list.py +++ b/amsn2/gui/front_ends/curses/contact_list.py @@ -28,6 +28,14 @@ def _on_char_cb(self, ch): import sys print >> sys.stderr, "Length is %d" % len(ch) print >> sys.stderr, "Received %s in Contact List" % ch.encode("UTF-8") + if ch == "KEY_UP": + self._clwidget.move(-1) + elif ch == "KEY_DOWN": + self._clwidget.move(1) + elif ch == "KEY_NPAGE": + self._clwidget.move(10) + elif ch == "KEY_PPAGE": + self._clwidget.move(-10) class aMSNContactListWidget(base.aMSNContactListWidget): @@ -44,6 +52,14 @@ def __init__(self, amsn_core, parent): self._thread.daemon = True self._thread.setDaemon(True) self._thread.start() + self._selected = 1 + + def move(self, num): + self._selected += num + if self._selected < 1: + self._selected = 1 + self.__repaint() + def contactListUpdated(self, clView): # Acquire the lock to do modifications @@ -122,7 +138,7 @@ def __repaint(self): cids.reverse() for c in cids: if self._contacts.has_key(c) and self._contacts[c]['cView'] is not None: - if i == y - 3: + if i == y - self._selected: self._win.bkgdset(curses.color_pair(1)) self._win.insstr(self._contacts[c]['cView'].name.toString()) self._win.bkgdset(curses.color_pair(0)) @@ -133,7 +149,7 @@ def __repaint(self): self._win.insertln() self._win.bkgdset(curses.color_pair(0)) i += 1 - if i == y - 3: + if i == y - self._selected: self._win.bkgdset(curses.color_pair(1)) self._win.insstr(self._groups[g].name.toString()) self._win.bkgdset(curses.color_pair(0))