[Nym3-commit] r148 - trunk/nym3/Client

laurent at komite.net laurent at komite.net
Wed Dec 29 01:44:58 CET 2004


Author: laurent
Date: 2004-12-29 01:44:57 +0100 (Wed, 29 Dec 2004)
New Revision: 148

Modified:
   trunk/nym3/Client/testcurses.py
Log:
Add support for message tagging.


Modified: trunk/nym3/Client/testcurses.py
===================================================================
--- trunk/nym3/Client/testcurses.py	2004-12-28 23:39:32 UTC (rev 147)
+++ trunk/nym3/Client/testcurses.py	2004-12-29 00:44:57 UTC (rev 148)
@@ -66,17 +66,19 @@
     def __init__(self):
 	self.synlist = [syn1, syn2] # TODO: testing only
 
-    def view(self, i):
+    def view(self):
 	"""Display the requested synopsis"""
 	# TODO : this needs a PAGER view.
-	self.synlist[i]['read_status'] = 'read'
+	self.synlist[self.ctx.index]['read_status'] = 'read'
 	pass
 
-    def mark_unread(self, i):
-	self.synlist[i]['read_status'] = 'unread'
+    def mark_unread(self):
+	for i in self.ctx.get_targets():
+	    self.synlist[i]['read_status'] = 'unread'
 
-    def mark_read(self, i):
-	self.synlist[i]['read_status'] = 'read'
+    def mark_read(self):
+	for i in self.ctx.get_targets():
+	    self.synlist[i]['read_status'] = 'read'
 
     def size(self):
 	return len(self.synlist)
@@ -123,14 +125,14 @@
 	    else: ret.append('')
 	return tuple(ret)
     
-    def fetch(self, l):
+    def fetch(self):
 	"""Schedule every entry listed in l for retrieval"""
-	for i in l:
+	for i in self.ctx.get_targets():
 	    self.synlist[i]['fetch_status'] = 'fetch'
 
-    def delete(self, l):
+    def delete(self):
 	"""Schedule every entry listed in l for deletion"""
-	for i in l:
+	for i in self.ctx.get_targets():
 	    self.synlist[i]['fetch_status'] = 'delete'
     
     def process_pending(self):
@@ -161,6 +163,7 @@
 	#the table, in fact a class with a method size() and line(i), and
 	#other action based on the lines
 	self.tab = tab
+	tab.ctx = self
     	(self.maxline, self.maxcol) = screen.getmaxyx()
 	self.index = 0 #index of the active line
 	self.fstindex = 0 #index of the lowest line displayed
@@ -169,11 +172,18 @@
 	self.listrange = max (0, self.maxline - 3)
 	self.action = {
 		ord('q') : self.quit, 
+		ord('t') : self.tag,
+		ord(';') : self.settagprefix,
+		#TODO: make this cleaner.
+		ord('f') : tab.fetch,
+		ord('d') : tab.delete,
 		curses.KEY_DOWN : self.on_K_down,
 		curses.KEY_UP : self.on_K_up,
 		curses.KEY_RESIZE : self.on_resize
 		}
+	self.tagprefix = None
 	self.draw_picture()
+	self.tagged = {}
 
     def message(self):
 	return "q:Quitter"
@@ -260,6 +270,20 @@
 	self.listrange = max (0, self.maxline - 3)
 	if self.listrange != 0:
 	    self.fstindex = (self.index / self.listrange) * self.listrange
+    
+    def tag(self):
+	"""Toggle tag-status of current message"""
+	if self.tagged.has_key(self.index):
+	    del(self.tagged[self.index])
+	else:
+	    self.tagged[self.index] = True
+
+    def settagprefix(self):
+	self.tagprefix = True
+    
+    def get_targets(self):
+	if self.tagprefix and self.tagged: return self.tagged.keys()
+	else: return [self.index]
 	    
 def func(stdscr):
     curses.curs_set(0)



More information about the Nym3-commit mailing list