From 4c3831b98072b3668350cd8c4140383f85484c4c Mon Sep 17 00:00:00 2001 From: Ralf Jung Date: Wed, 17 Oct 2012 16:20:21 +0200 Subject: [PATCH 1/1] rework GUI frontend selection --- gui.py | 46 ++++++++++++++++++++++++++++------------------ 1 file changed, 28 insertions(+), 18 deletions(-) diff --git a/gui.py b/gui.py index 83099e8..155226b 100644 --- a/gui.py +++ b/gui.py @@ -18,26 +18,36 @@ # This file abstracts GUI stuff away, so that the actual dsl.py does not have to deal with it import sys -qt_available = True -try: +# frontend detectors +def qtAvailable(): + try: + import PyQt4 + return True + except ImportError: + return False + +def zenityAvailable(): + return True # FIXME + +# actual frontend +if qtAvailable(): from PyQt4 import QtGui from qt_dialogue import PositionSelection app = QtGui.QApplication(sys.argv) -except Exception, e: - import subprocess - from zenity_dialogue import run as zenity_run - qt_available = False - -def error(message): - '''Displays a fatal error to the user''' - if qt_available: + + def error(message): + '''Displays a fatal error to the user''' QtGui.QMessageBox.critical(None, 'Fatal error', message) - else: - subprocess.check_call(["zenity", "--error", "--text="+message]) - -def setup(internalResolutions, externalResolutions): - '''Returns a ScreenSetup instance, or None if the user canceled''' - if qt_available: + + def setup(internalResolutions, externalResolutions): + '''Returns a ScreenSetup instance, or None if the user canceled''' return PositionSelection(internalResolutions, externalResolutions).run() - else: - return zenity_run(internalResolutions, externalResolutions) +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' -- 2.30.2