pre select last used setup in qt gui
[lilass.git] / gui.py
diff --git a/gui.py b/gui.py
index 7db44b83e1fe9f9128d1c6554eea6eb968349e26..4847668630baea6c0642a1eac74ea47e5ea32f30 100644 (file)
--- a/gui.py
+++ b/gui.py
@@ -1,5 +1,5 @@
 # DSL - easy Display Setup for Laptops
 # DSL - easy Display Setup for Laptops
-# Copyright (C) 2012 Ralf Jung <post@ralfj.de>
+# Copyright (C) 2012-2015 Ralf Jung <post@ralfj.de>
 #
 # 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
 #
 # 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
@@ -16,7 +16,6 @@
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 # This file abstracts GUI stuff away, so that the actual dsl.py does not have to deal with it
 # Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
 
 # This file abstracts GUI stuff away, so that the actual dsl.py does not have to deal with it
-import sys
 
 '''
 This module implements two functions:
 
 '''
 This module implements two functions:
@@ -29,64 +28,13 @@ def setup(internalResolutions, externalResolutions):
     The user should be asked about his display setup preferences.
     The function returns None if the user cancelled, and an instance of dsl.ScreenSetup otherwise.
 '''
     The user should be asked about his display setup preferences.
     The function returns None if the user cancelled, and an instance of dsl.ScreenSetup otherwise.
 '''
-import subprocess, collections
+import collections
 
 
-# Qt frontend
-class QtFrontend:
-    def __init__(self):
-        from PyQt4 import QtGui
-        self.app = QtGui.QApplication(sys.argv)
-        print("Qt loaded")
-    
-    def error(self, message):
-        from PyQt4 import QtGui
-        QtGui.QMessageBox.critical(None, 'Fatal error', message)
-    
-    def setup(self, internalResolutions, externalResolutions):
-        from qt_dialogue import PositionSelection
-        return PositionSelection(internalResolutions, externalResolutions).run()
-    
-    @staticmethod
-    def isAvailable():
-        try:
-            import PyQt4
-            return True
-        except ImportError:
-            return False
+from qt_frontend import QtFrontend
+from cli_frontend import CLIFrontend
+from zenity_frontend import ZenityFrontend
 
 
 
 
-# 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):
-        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):
-        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
 # list of available frontends
 frontends = collections.OrderedDict()
 frontends["qt"] = QtFrontend
@@ -100,8 +48,10 @@ def getFrontend(name = None):
         if name in frontends:
             if frontends[name].isAvailable():
                 return frontends[name]() # call constructor
         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():
     # auto-detect
     for frontend in frontends.values():
         if frontend.isAvailable():