From bc9c79c6abcc3bb53a09147f2d66f7f36dbca28c Mon Sep 17 00:00:00 2001 From: Jeff Armstrong Date: Wed, 29 May 2013 09:16:47 -0400 Subject: Initial commit of final entry --- lib/curses_main.py | 69 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 lib/curses_main.py (limited to 'lib/curses_main.py') diff --git a/lib/curses_main.py b/lib/curses_main.py new file mode 100644 index 0000000..f44d871 --- /dev/null +++ b/lib/curses_main.py @@ -0,0 +1,69 @@ +# Murder in the Park - A Robotic Mystery +# Copyright (C) 2008 Jeffrey Armstrong (a.k.a. PrintStar) +# http://jeff.rainbow-100.com/ +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +# +# A full version of the license terms is available in LICENSE. + +import sys +import curses +import textwrap +from gamecmd import * + +class FakeStdIO(object): + def __init__(self,stdscr): + self.stdscr = stdscr + + def write(self, str): + height,width = self.stdscr.getmaxyx() + if len(str) >= width: + for line in textwrap.wrap(str,width-2): + self.stdscr.addstr(line) + self.stdscr.addstr("\n") + else: + self.stdscr.addstr(str) + self.stdscr.refresh() + + def readline(self): + temp = self.stdscr.getstr() + if len(temp)==0: + temp = ' ' + return temp + +def launch(cmdparser): + + stdscr = curses.initscr() + curses.cbreak() + #curses.noecho() + curses.echo() + stdscr.keypad(1) + stdscr.scrollok(True) + stdscr.clear() + stdscr.refresh() + + try: + # Run your code here + io = FakeStdIO(stdscr) + sys.stdin = io + sys.stdout = io + cmdparser.stdout = io + cmdparser.stdin = io + cmdparser.cmdloop() + + finally: + curses.nocbreak() + stdscr.keypad(0) + curses.echo() + curses.endwin() -- cgit v1.2.3