diff options
| -rw-r--r-- | asciifarmclient/display.py | 11 | ||||
| -rw-r--r-- | asciifarmclient/main.py | 26 | ||||
| -rw-r--r-- | asciifarmclient/parseargs.py | 3 |
3 files changed, 19 insertions, 21 deletions
diff --git a/asciifarmclient/display.py b/asciifarmclient/display.py index 05b4733..2b42142 100644 --- a/asciifarmclient/display.py +++ b/asciifarmclient/display.py @@ -2,10 +2,8 @@ import os -from ratuil.layout import Layout -from ratuil.bufferedscreen import BufferedScreen as Screen -#from ratuil.screen import Screen from ratuil.textstyle import TextStyle +from ratuil.layout import Layout from .listselector import ListSelector @@ -15,18 +13,17 @@ ALPHABET = "!\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`ab class Display: - def __init__(self, charmap, ratuil_args={}): + def __init__(self, screen, charmap, ratuil_args={}): + self.screen = screen self.charmap = charmap fname = os.path.join(os.path.dirname(__file__), "layout.xml") - self.layout = Layout.from_xml_file(fname) + self.layout = Layout.from_xml_file(screen, fname) self.layout.get("field").set_char_size(self.charmap.character_width) - self.screen = Screen(**ratuil_args) self.screen.clear() - self.layout.set_target(self.screen) self.layout.update() # temporary, until these have a better place diff --git a/asciifarmclient/main.py b/asciifarmclient/main.py index e8cd793..38d4934 100644 --- a/asciifarmclient/main.py +++ b/asciifarmclient/main.py @@ -3,8 +3,6 @@ import json import sys -import termios -import tty import signal import getpass import hashlib @@ -14,13 +12,20 @@ from .connection import Connection from .gameclient import Client from .display import Display from .parseargs import parse_args -from ratuil.screen import Screen from asciifarmclient.common import messages def main(argv=None): - (name, socketType, address, keybindings, characters, colours, logfile, ratuil_args) = parse_args(argv) + (name, socketType, address, keybindings, characters, colours, logfile, ratuil_screen, ratuil_args) = parse_args(argv) + if ratuil_screen == "ansibuffered": + from ratuil.bufferedscreen import Screen + elif ratuil_screen == "ansi": + from ratuil.ansiscreen import Screen + elif ratuil_screen == "curses": + from ratuil.cursedscreen import Screen + else: + raise ValueError("Invalid ratuil screen selected") connection = Connection(socketType) try: @@ -35,16 +40,12 @@ def main(argv=None): closeMessage = None #os.environ.setdefault("ESCDELAY", "25") - - fd = sys.stdin.fileno() - oldterm = termios.tcgetattr(fd) + screen = Screen(**ratuil_args) try: - - tty.setraw(sys.stdin) - Screen.default.hide_cursor() + screen.initialize_terminal() - display = Display(characters, ratuil_args) + display = Display(screen, characters, ratuil_args) client = Client(display, name, connection, keybindings, logfile) signal.signal(signal.SIGWINCH, client.onSigwinch) try: @@ -58,8 +59,7 @@ def main(argv=None): closeMessage = client.closeMessage finally: ## Set everything back to normal - termios.tcsetattr(fd, termios.TCSADRAIN, oldterm) - Screen.default.finalize() + screen.finalize_terminal() if error is not None: diff --git a/asciifarmclient/parseargs.py b/asciifarmclient/parseargs.py index 2ab56ab..133c477 100644 --- a/asciifarmclient/parseargs.py +++ b/asciifarmclient/parseargs.py @@ -31,6 +31,7 @@ def parse_args(argv): parser.add_argument('-o', '--logfile', help='All game messages will be written to this file.', default=None) parser.add_argument('--reset-style', help='Reset the style when it changes. Useful on some terminals', action="store_true") parser.add_argument('--blink-bright-background', help='Use blink attribute to make background brighter. Useful for terminals that don\'t have bright backgrounds usually. Implies --reset-style', action="store_true") + parser.add_argument('--ratuil-screen', help='The drawing backend that ratuil uses', choices=["curses", "ansi", "ansibuffered"], default="curses") colourGroup = parser.add_mutually_exclusive_group() colourGroup.add_argument('-l', '--colours', '--colors', help='enable colours! :)', action="store_true") @@ -65,4 +66,4 @@ def parse_args(argv): else: name = username - return (name, args.socket, address, keybindings, charmap, colours, args.logfile, {"always_reset": args.reset_style, "blink_bright_background": args.blink_bright_background}) + return (name, args.socket, address, keybindings, charmap, colours, args.logfile, args.ratuil_screen, {"always_reset": args.reset_style, "blink_bright_background": args.blink_bright_background}) |
