repair question frontend
[lilass.git] / question_frontend.py
index 4782ba1bbe9df5e2ee889228dc686399e59de864..8fe4a7aabce209d1b1102e26364883200873d2b0 100644 (file)
@@ -34,23 +34,32 @@ class OperationMode(Enum):
 class QuestionFrontend:
     def userChoose (self, title, choices, returns, fallback):
         raise Exception("The abstract method 'userChoose' has not been implemented by %s"%str(self.__class__))
+
     def selectResolution(self, displayname, availablemodes):
         modedescs = list(map(str, availablemodes))
         return self.userChoose("Select resolution for %s"%displayname, modedescs, availablemodes, None)
+
     def setup (self, situation):
+        if situation.previousSetup:
+            applyPrevious = self.userChoose("This display is known. The last setup for it was like this:\n%s.\nApply the last used configuration?" % str(situation.previousSetup), ("Apply last setup", "Enter different setup"), (True,False), None)
+            if applyPrevious is None:
+                return None
+            if applyPrevious is True:
+                return situation.previousSetup
+            assert applyPrevious is False
         operationmodes = list(OperationMode)
         operationmodedescs = list(map(lambda x: x.text, operationmodes))
         operationmode = self.userChoose ("Display setup", operationmodedescs, operationmodes, None)
         if operationmode is None:
             return None
         elif operationmode is OperationMode.INTERNAL_ONLY:
-            intres = self.selectResolution("the internal screen", situation.internalResolutions())
+            intres = self.selectResolution("the internal screen", situation.internalConnector.getResolutionList())
             if intres is None:
                 return None
             else:
                 return ScreenSetup(intres, None, None, False)
         elif operationmode is OperationMode.EXTERNAL_ONLY:
-            extres = self.selectResolution("the external screen", situation.externalResolutions())
+            extres = self.selectResolution("the external screen", situation.externalConnector.getResolutionList())
             if extres is None:
                 return None
             else:
@@ -69,10 +78,10 @@ class QuestionFrontend:
                     return None
                 return ScreenSetup(commonres,commonres,relpos,False)
             # select resolutions independently
-            intres = self.selectResolution("the internal screen", situation.internalResolutions())
+            intres = self.selectResolution("the internal screen", situation.internalConnector.getResolutionList())
             if intres is None:
                 return None
-            extres = self.selectResolution("the external screen", situation.externalResolutions())
+            extres = self.selectResolution("the external screen", situation.externalConnector.getResolutionList())
             if extres is None:
                 return None
             extprim = self.userChoose("Select primary screen", ["Internal screen is primary","External screen is primary"], [False,True], None)