diff --git a/src/gui/__init__.py b/src/gui/__init__.py --- a/src/gui/__init__.py +++ b/src/gui/__init__.py @@ -21,14 +21,15 @@ class GUI: self.root.option_add('*tearOff',False) # for menu self.detector=ImageAnalyzer() + self._frame=None self._frameKey=0 self._ownMessages=None self._coreMessages=None - self._state=GUI.SETUP + self._state=GUI.RECORDING - self.mainWindow = MainWindow(self, master=self.root) + self.mainWindow = MainWindow(self) self.settings=None self.root.columnconfigure(0,weight=1) self.root.rowconfigure(0,weight=1) @@ -39,7 +40,7 @@ class GUI: self.root.bind("",lambda e: Settings(self)) self.mainWindow.bind("",lambda e: self._shutDown()) - self.setUp() + self.setRecording() def __call__(self,ownMessages,coreMessages): self._ownMessages=ownMessages @@ -57,6 +58,7 @@ class GUI: self.mainWindow.setUp() self.root.bind("",lambda e: self.sendMsg("prevFrame")) self.root.bind("",lambda e: self.sendMsg("nextFrame")) + self._state=GUI.SETUP def setRecording(self): self.mainWindow.setRecording() @@ -65,11 +67,16 @@ class GUI: if self.settings: self.settings.destroy() self.settings=None - self.sendParams() + if self._coreMessages: self.sendParams() + self._state=GUI.RECORDING def sendParams(self): self.sendMsg("setParams",(self.detector.params.copy(),)) + def preview(self): + if self.detector.analyze(self._frame): + self.mainWindow.boardView.redrawState(self.detector.board) + def _shutDown(self): log.info("GUI proc exiting.") self._ownMessages.send("!kill",("gui",)) @@ -89,11 +96,15 @@ class GUI: if self._state!=type and self.mainWindow.imgView.isSet(): log.info("ignored setFrame event, wrong type") return + self._frame=frame self._frameKey=key self.mainWindow.setFrame(frame) self.root.event_generate("<>") def _stateHandler(self,gameState,moves): + if self._state==GUI.SETUP: + log.info("ignored incoming gameState") + return labels={(row,col):(i+1) for (i,(c,row,col)) in enumerate(moves)} self.mainWindow.boardView.redrawState(gameState,labels)