Now working on actual librarian
authorJohn Ladan <jladan@uwaterloo.ca>
Sat, 10 Mar 2012 07:56:31 +0000 (02:56 -0500)
committerJohn Ladan <jladan@uwaterloo.ca>
Sat, 10 Mar 2012 07:56:31 +0000 (02:56 -0500)
cursestest.py
librarian.py [new file with mode: 0755]

index ea7b475..524061f 100755 (executable)
@@ -33,27 +33,26 @@ def menutest(stdscr, l):
     (rows,cols)=stdscr.getmaxyx()
     w = curses.newwin(10,40,(rows-10)/2, (cols-40)/2)
     w.keypad(1)
-    (rows,cols)=w.getmaxyx()
     i=0
     for mitem in l:
         w.addstr(i,0,mitem)
         i+=1
 
     highlight=0
-    w.chgat(highlight,0, cols, curses.A_REVERSE)
+    w.chgat(highlight,0, curses.A_REVERSE)
     w.refresh()
     ch=w.getch()
     while (ch!=113): # leave on q
         if ch==curses.KEY_UP:
             if highlight!=0:
-                w.chgat(highlight,0, cols, 0)
+                w.chgat(highlight,0, 0)
                 highlight -= 1
-                w.chgat(highlight,0, cols, curses.A_REVERSE)
+                w.chgat(highlight,0, curses.A_REVERSE)
         if ch==curses.KEY_DOWN:
             if highlight!=len(l)-1:
-                w.chgat(highlight,0, cols, 0)
+                w.chgat(highlight,0, 0)
                 highlight += 1
-                w.chgat(highlight,0, cols, curses.A_REVERSE)
+                w.chgat(highlight,0, curses.A_REVERSE)
         w.refresh()
         ch = w.getch()
     
diff --git a/librarian.py b/librarian.py
new file mode 100755 (executable)
index 0000000..ab9a4fd
--- /dev/null
@@ -0,0 +1,57 @@
+#!/usr/bin/env python
+
+import curses
+
+def menutest(stdscr, l):
+    curses.curs_set(0)
+    (rows,cols)=stdscr.getmaxyx()
+    w = curses.newwin(10,40,(rows-10)/2, (cols-40)/2)
+
+    menu(w, l)
+    
+    curses.curs_set(1)
+
+# item is a list of (string, callable) tuples
+def menu(w, items):
+    w.keypad(1)
+    highlight=0
+    for (mitem,fun) in items:
+        w.addstr(highlight,0, mitem)
+        highlight +=1
+
+    highlight=0
+    w.chgat(highlight, 0, curses.A_REVERSE)
+    w.refresh()
+    ch=w.getch()
+    while (ch!=113): # leave on q
+        if ch==curses.KEY_UP:
+            if highlight!=0:
+                w.chgat(highlight,0, 0)
+                highlight -= 1
+                w.chgat(highlight,0, curses.A_REVERSE)
+        if ch==curses.KEY_DOWN:
+            if highlight!=len(items)-1:
+                w.chgat(highlight,0, 0)
+                highlight += 1
+                w.chgat(highlight,0, curses.A_REVERSE)
+        if ch==114 or ch==10:
+            (s,f)=items[highlight]
+            win=curses.newwin(1,40,10,10)
+            f(win)
+        w.refresh()
+        ch = w.getch()
+
+def poo(w):
+    w.addstr("POOOOOOOO!")
+    w.refresh()
+
+def other(w):
+    w.addstr("I am not poo")
+    w.refresh()
+
+m = [("item 1", other),
+     ("poo", poo),
+     ("add book/article/stuff", other),
+     ("update", other),
+     ("remove", other)]
+curses.wrapper(menutest, m)