X-Git-Url: https://git.sommitrealweird.co.uk/curses-crossword.git/blobdiff_plain/0f92380b76d9764b7175623348bab06ec88adfe2..3fc70686c19e36d7c5c490d6ebca63cff3393479:/curses_crossword.py diff --git a/curses_crossword.py b/curses_crossword.py index 123c3ee..88db74e 100755 --- a/curses_crossword.py +++ b/curses_crossword.py @@ -95,14 +95,14 @@ def parsecrossword(crossworddata): if inacross: if line != "": parts = line.split() - question_number = int(parts[0]) + question_number = int(parts[0].split(",")[0]) clue = " ".join(parts[1:]) crossword["across"][int(question_number)] = \ clue.encode(code) if indown: if line != "": parts = line.split() - question_number = int(parts[0]) + question_number = int(parts[0].split(",")[0]) clue = " ".join(parts[1:]) crossword["down"][int(question_number)] = clue.encode(code) num_cols = len(crossword["grid"][0]) @@ -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