diff --git a/src/gui/__init__.py b/src/gui/__init__.py --- a/src/gui/__init__.py +++ b/src/gui/__init__.py @@ -8,6 +8,9 @@ from .settings import Settings class GUI: + SETUP=PREVIEW=0 + RECORDING=REAL=1 + def __init__(self): self.root = tk.Tk() self.root.title("OneEye {0}.{1}.{2}".format(*config.misc.version)) @@ -16,16 +19,20 @@ class GUI: self._ownMessages=None self._coreMessages=None + self._state=GUI.SETUP + self.mainWindow = MainWindow(self, master=self.root) self.root.columnconfigure(0,weight=1) self.root.rowconfigure(0,weight=1) self.root.bind("<>", lambda e: self.mainWindow.redrawImgView()) - self.root.bind("",lambda e: self.sendMsg("prevFrame")) - self.root.bind("",lambda e: self.sendMsg("nextFrame")) + self.root.bind("<>", lambda e: self.setUp()) + self.root.bind("<>", lambda e: self.setRecording()) self.root.bind("",lambda e: Settings(self)) self.mainWindow.bind("",lambda e: self._ownMessages.send("!kill",("gui",))) + self.setUp() + def __call__(self,ownMessages,coreMessages): self._ownMessages=ownMessages self._coreMessages=coreMessages @@ -38,13 +45,24 @@ class GUI: def sendMsg(self,actionName,args=tuple(),kwargs=None): self._coreMessages.send(actionName,args,kwargs) + def setUp(self): + self.mainWindow.setUp() + self.root.bind("",lambda e: self.sendMsg("prevFrame")) + self.root.bind("",lambda e: self.sendMsg("nextFrame")) + + def setRecording(self): + self.mainWindow.setRecording() + self.root.bind("",lambda e: None) + self.root.bind("",lambda e: None) + def _handleEvent(self,e): actions={"setCurrentFrame":self._frameHandler, "setGameState":self._stateHandler} (actionName,args,kwargs)=e return actions[actionName](*args,**kwargs) - def _frameHandler(self,newFrame): + def _frameHandler(self,newFrame,type): + if self._state!=type: return self.mainWindow.setCurrentFrame(newFrame) self.root.event_generate("<>") @@ -53,3 +71,18 @@ class GUI: self.mainWindow.boardView.redrawState(gameState,labels) gui=GUI() + +""" +# setup # +* we can click around the ImgView +* we can walk through the frames back and forth +* BoardView is showing what the reading of ImgView _would_ be +* core is reading and analyzing frames, pushing results to StateBag, but not showing them + +# recording # +* ImgView is showing the current picture, is not clickable +* BoardView is showing last detected position +* on switch to recording (if parameters have changed): + * feed analyzer new parameters and start using them + * in the background reanalyze cached frames with the new parameters and merge them into StateBag +"""