X-Git-Url: https://git.ralfj.de/lilass.git/blobdiff_plain/6fd92bb21b1a743d0a794141277a7aea857d3c50..a5b44dc6eece34ab1539a0e71775eadfbcf6c81c:/question_frontend.py diff --git a/question_frontend.py b/question_frontend.py index 4782ba1..8fe4a7a 100644 --- a/question_frontend.py +++ b/question_frontend.py @@ -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)