Merge pull request #1 from ConnyOnny/master
[lilass.git] / gui.py
diff --git a/gui.py b/gui.py
index d586442711a4a27cf45fb331b78cdeacf0a104a4..62decc6b326c61e87a90ce02c673594340059f6a 100644 (file)
--- a/gui.py
+++ b/gui.py
@@ -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,10 +28,11 @@ 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 sys
+import collections
 
 
-from question_frontend import QuestionFrontend
-from screen import processOutputIt
+from cli_frontend import CLIFrontend
+from zenity_frontend import ZenityFrontend
 
 # Qt frontend
 class QtFrontend:
 
 # Qt frontend
 class QtFrontend:
@@ -57,63 +57,6 @@ class QtFrontend:
         except ImportError:
             return False
 
         except ImportError:
             return False
 
-
-# Zenity frontend
-class ZenityFrontend(QuestionFrontend):
-    def error(self, message):
-        '''Displays a fatal error to the user'''
-        subprocess.check_call(["zenity", "--error", "--text="+message])
-    def userChoose (self, title, choices, returns, fallback):
-        assert len(choices) == len(returns)
-        args = ["zenity", "--list", "--text="+title, "--column="]+choices
-        switch = dict (list(zip (choices,returns)))
-        try:
-            for line in processOutputIt(*args):
-                return switch.get(line.strip(), fallback)
-        except Exception:
-            # on user cancel, the return code of zenity is nonzero
-            return fallback
-        # if the output was empty
-        return fallback
-    def isAvailable():
-        try:
-            processOutputIt("zenity", "--version")
-            return True
-        except FileNotFoundError:
-            return False
-        except PermissionError:
-            return False
-
-# CLI frontend
-class CLIFrontend(QuestionFrontend):
-    def error(self, message):
-        print(message, file=sys.stderr)
-
-    def userChoose (self, title, choices, returns, fallback):
-        while True:
-            # print question
-            print(title)
-            for i in range(len(choices)):
-                print("%d. %s"%(i,choices[i]))
-            print("Enter 'c' to cancel.")
-            # handle input
-            answer = input("> ")
-            if answer == "c":
-                return None
-            #else
-            try:
-                answerint = int(answer)
-                if answerint >= 0 and answerint < len(choices):
-                    return returns[answerint]
-            except ValueError:
-                pass
-            # if we are here something invalid was entered
-            print("INVALID ANSWER: '%s'" % answer)
-
-    @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