diff options
| author | Jeff Armstrong <jeff@approximatrix.com> | 2013-05-29 09:16:47 -0400 |
|---|---|---|
| committer | Jeff Armstrong <jeff@approximatrix.com> | 2013-05-29 09:16:47 -0400 |
| commit | bc9c79c6abcc3bb53a09147f2d66f7f36dbca28c (patch) | |
| tree | 31d739939b23f3fc287112a23f9e7861703c1315 /lib/curses_main.py | |
| download | robotadventure-master.tar.gz robotadventure-master.zip | |
Diffstat (limited to 'lib/curses_main.py')
| -rw-r--r-- | lib/curses_main.py | 69 |
1 files changed, 69 insertions, 0 deletions
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 <http://www.gnu.org/licenses/>. +# +# 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() |
