X-Git-Url: https://git.ralfj.de/lilass.git/blobdiff_plain/33988e416bd971003f213d2bd04fc95104642ef8..4c3831b98072b3668350cd8c4140383f85484c4c:/gui.py?ds=inline diff --git a/gui.py b/gui.py index 25f71c2..155226b 100644 --- a/gui.py +++ b/gui.py @@ -17,14 +17,37 @@ # This file abstracts GUI stuff away, so that the actual dsl.py does not have to deal with it import sys -from PyQt4 import QtGui -from qt_dialogue import PositionSelection -app = QtGui.QApplication(sys.argv) -def error(message): - '''Displays a fatal error to the user''' - QtGui.QMessageBox.critical(None, 'Fatal error', message) +# frontend detectors +def qtAvailable(): + try: + import PyQt4 + return True + except ImportError: + return False -def setup(internalResolutions, externalResolutions): - '''Returns a ScreenSetup instance, or None if the user canceled''' - return PositionSelection(internalResolutions, externalResolutions).run() +def zenityAvailable(): + return True # FIXME + +# actual frontend +if qtAvailable(): + from PyQt4 import QtGui + from qt_dialogue import PositionSelection + app = QtGui.QApplication(sys.argv) + + def error(message): + '''Displays a fatal error to the user''' + QtGui.QMessageBox.critical(None, 'Fatal error', message) + + def setup(internalResolutions, externalResolutions): + '''Returns a ScreenSetup instance, or None if the user canceled''' + return PositionSelection(internalResolutions, externalResolutions).run() +elif zenityAvailable(): + import subprocess + from zenity_dialogue import run as setup # this provides the setup function + + def error(message): + '''Displays a fatal error to the user''' + subprocess.check_call(["zenity", "--error", "--text="+message]) +else: + print >> sys.stderr, 'No GUI frontend available, please make sure PyQt4 or Zenity is installed'