From: Brett Parker <iDunno@sommitrealweird.co.uk>
Date: Mon, 20 Jul 2009 00:10:52 +0000 (+0100)
Subject: Put the clues in to a scrollable pad so that we can see scroll them
X-Git-Url: https://git.sommitrealweird.co.uk/curses-crossword.git/commitdiff_plain/3fc70686c19e36d7c5c490d6ebca63cff3393479?ds=sidebyside

Put the clues in to a scrollable pad so that we can see scroll them
---

diff --git a/curses_crossword.py b/curses_crossword.py
index 7564376..88db74e 100755
--- a/curses_crossword.py
+++ b/curses_crossword.py
@@ -203,21 +203,31 @@ def crossword(stdscr, crossworddata):
         curx += 4
     curx -= 1
     stdscr.addch(cury, curx, curses.ACS_LRCORNER)
-    # draw the clues in
+    # draw the clues in (in their own pad)
+    cluespad = curses.newpad( \
+        len(crossword["across"].keys()) \
+        + len(crossword["down"].keys()) \
+        + 3, stdscr.getmaxyx()[1])
     cury = (len(crossword["grid"]) * 2) + 1
     curx = 0
-    stdscr.addstr(cury, curx, "Across")
+    padtlx = curx
+    padtly = cury
+
+    (padbry, padbrx) = stdscr.getmaxyx()
+    sys.stderr.write("Pady, padx, max bits: %dx%d, %dx%d\n" %(padtly, padtlx, padbry, padbrx))
+    cury = 0
+    cluespad.addstr(cury, curx, "Across")
     cury += 1
     for cluenumber in crossword["across"].keys():
-        stdscr.addstr(cury, curx, "%3s: %s" \
+        cluespad.addstr(cury, curx, "%3s: %s" \
             %(str(cluenumber), crossword["across"][cluenumber]))
         cury += 1
 
     cury += 1
-    stdscr.addstr(cury, curx, "Down")
+    cluespad.addstr(cury, curx, "Down")
     cury += 1
     for cluenumber in crossword["down"].keys():
-        stdscr.addstr(cury, curx, "%3s: %s" \
+        cluespad.addstr(cury, curx, "%3s: %s" \
             %(str(cluenumber), crossword["down"][cluenumber]))
         cury += 1
 
@@ -231,11 +241,24 @@ def crossword(stdscr, crossworddata):
         gridx += 1
 
     stdscr.move(cury, curx)
+    cluescury = 0
+
+    cluespad.refresh(cluescury, 0, padtly, padtlx, padbry - 1, padbrx - 1)
+    cluespad.overlay(stdscr, cluescury, 0, padtly, padtlx, padbry - 1, padbrx - 1)
+
 
     while 1:
         inch = stdscr.getch()
         if inch == curses.ascii.ESC:
             break
+        if inch == curses.KEY_NPAGE:
+            if cluescury < cluespad.getmaxyx()[0] - (padbry - padtly):
+                cluescury += 1
+            cluespad.refresh(cluescury, 0, padtly, padtlx, padbry - 1, padbrx - 1)
+        if inch == curses.KEY_PPAGE:
+            if cluescury > 0:
+                cluescury -= 1
+            cluespad.refresh(cluescury, 0, padtly, padtlx, padbry - 1, padbrx - 1)
         if inch == curses.KEY_RIGHT:
             if gridx < (len(crossword["grid"][0]) - 1):
                 gridx += 1