X-Git-Url: https://git.ralfj.de/lilass.git/blobdiff_plain/8d8ac3226f3669f8524eef50161ae7241a808d7e..903dba50d3acc98129b86fb8c6a92997ec086114:/gui.py diff --git a/gui.py b/gui.py index 50cb3a3..1622410 100644 --- a/gui.py +++ b/gui.py @@ -1,5 +1,5 @@ # DSL - easy Display Setup for Laptops -# Copyright (C) 2012 Ralf Jung +# Copyright (C) 2012-2015 Ralf Jung # # 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 @@ -31,6 +31,10 @@ def setup(internalResolutions, externalResolutions): ''' import subprocess, collections +from cli_frontend import CLIFrontend +from zenity_frontend import ZenityFrontend +from screen import processOutputIt + # Qt frontend class QtFrontend: def __init__(self): @@ -42,9 +46,9 @@ class QtFrontend: from PyQt4 import QtGui QtGui.QMessageBox.critical(None, 'Fatal error', message) - def setup(self, internalResolutions, externalResolutions, commonRes): + def setup(self, situation): from qt_dialogue import PositionSelection - return PositionSelection(internalResolutions, externalResolutions, commonRes).run() + return PositionSelection(situation).run() @staticmethod def isAvailable(): @@ -54,39 +58,6 @@ class QtFrontend: except ImportError: return False - -# Zenity frontend -class ZenityFrontend: - def error(message): - '''Displays a fatal error to the user''' - subprocess.check_call(["zenity", "--error", "--text="+message]) - - def setup(self, internalResolutions, externalResolutions, commonRes): - from zenity_dialogue import run - run(internalResolutions, externalResolutions) - - @staticmethod - def isAvailable(): - try: - from dsl import processOutputIt - processOutputIt("zenity", "--version") - return True - except Exception: - return False - - -# CLI frontend -class CLIFrontend: - def error(self, message): - print(message, file=sys.stderr) - - def setup(self, internalResolutions, externalResolutions, commonRes): - raise Exception("Choosing the setup interactively is not supported with the CLI frontend") - - @staticmethod - def isAvailable(): - return True - # list of available frontends frontends = collections.OrderedDict() frontends["qt"] = QtFrontend @@ -100,8 +71,10 @@ def getFrontend(name = None): if name in frontends: if frontends[name].isAvailable(): return frontends[name]() # call constructor - # frontend not found or not available - raise Exception("Frontend %s not found or not available" % name) + else: + raise Exception("Frontend %s not available" % name) + # frontend not found + raise Exception("Frontend %s not found" % name) # auto-detect for frontend in frontends.values(): if frontend.isAvailable():