More work on book data form.
authorJohn Ladan <jladan@uwaterloo.ca>
Wed, 14 Mar 2012 21:44:13 +0000 (17:44 -0400)
committerJohn Ladan <jladan@uwaterloo.ca>
Wed, 14 Mar 2012 21:44:13 +0000 (17:44 -0400)
librarian.py

index 67f1f92..f051507 100755 (executable)
@@ -36,25 +36,74 @@ def menu(w, items):
                 w.chgat(highlight,0, curses.A_REVERSE)
         if ch==114 or ch==10:
             (s,f)=items[highlight]
-            win=curses.newwin(1,50,10,10)
-            f(win)
+            f()
         w.refresh()
         ch = w.getch()
 
+# items is a list of (label, value) pairs
+def drawForm(w, title, items, highlight):
+    w.addstr(1,1,title)
+    r=3;
+    m=0;
+    for l, v in items:
+        m = max(len(l),m)
+    m+=3
+    for l, v in items:
+        c = m-len(l)-2
+        w.addstr(r,c,l+":")
+        w.addstr(r,m,v)
+        r+=2
+    return m
 
-def addMenu(w):
-    w.addstr("I will be an interface to add books")
+
+def addMenu():
+    formdata = [("ISBN","112733"),
+                ("Title", "Poo"),
+                ("Author","")]
+    w=curses.newwin(10,50,10,10)
+    (y,x)=w.getmaxyx()
+    w.border()
+    w.keypad(1)
+    curses.curs_set(1)
+    highlight=0
+    r=3
+    m = drawForm(w,"Add a Book", formdata, highlight)
+    w.chgat(r,m,x-m-2,curses.A_UNDERLINE)
+    w.move(r,m+len(formdata[highlight][1]))
+    ch = w.getch()
+    while (ch!=113):
+        if ch==curses.KEY_UP:
+            if highlight!=0:
+                w.chgat(r,m,x-m-2,curses.A_NORMAL)
+                highlight -= 1
+                r=3+2*highlight
+                w.chgat(r,m,x-m-2,curses.A_UNDERLINE)
+                w.move(r,m+len(formdata[highlight][1]))
+        if ch==curses.KEY_DOWN:
+            if highlight != len(formdata) -1:
+                w.chgat(r,m,x-m-2,curses.A_NORMAL)
+                highlight += 1
+                r=3+2*highlight
+                w.chgat(r,m,x-m-2,curses.A_UNDERLINE)
+                w.move(r,m+len(formdata[highlight][1]))
+        w.refresh()
+        ch = w.getch()
+
+    curses.curs_set(0)
     w.refresh()
 
-def updateMenu(w):
+def updateMenu():
+    w=curses.newwin(1,50,10,10)
     w.addstr("I will be used to update or modify book records")
     w.refresh()
 
-def deleteMenu(w):
+def deleteMenu():
+    w=curses.newwin(1,50,10,10)
     w.addstr("I will be used to delete book records")
     w.refresh()
 
-def browseMenu(w):
+def browseMenu():
+    w=curses.newwin(1,50,10,10)
     w.addstr("I will be used to browse book records")
     w.refresh()