diff --git a/src/core.py b/src/core.py --- a/src/core.py +++ b/src/core.py @@ -19,12 +19,15 @@ class Core: self._ownMessages=MsgQueue(self._handleEvent) self._guiMessages=MsgQueue() - imgPath=os.path.join(os.path.dirname(__file__), "..","images",cfg.misc.defaultImage) + self._imgDir=os.path.join(os.path.dirname(__file__), "..","images") + self._imgs=sorted(os.listdir(self._imgDir)) + self._imgIndex=cfg.misc.defaultImage + imgPath=os.path.join(self._imgDir,self._imgs[self._imgIndex]) self._frame=PIL.Image.open(imgPath) self._guiProc=multiprocessing.Process(name="gui", target=gui, args=(self._guiMessages,self._ownMessages)) self._guiProc.start() - self._guiMessages.send("setCurrentFrame",(self._frame.copy(),)) + self.relativeFrame(0) def setCorners(self,corners): self.detector.setGridCorners(corners) @@ -37,6 +40,12 @@ class Core: if self.detector.analyze(self._frame): self._guiMessages.send("setGameState",(self.detector.board,)) + def relativeFrame(self,step): + self._imgIndex=(self._imgIndex+step)%len(self._imgs) + imgPath=os.path.join(self._imgDir,self._imgs[self._imgIndex]) + self._frame=PIL.Image.open(imgPath) + self._guiMessages.send("setCurrentFrame",(self._frame.copy(),)) + def listen(self): listenerThread=threading.Thread(target=lambda: self._ownMessages.listen()) listenerThread.start() @@ -46,7 +55,12 @@ class Core: self._ownMessages.send("!kill") def _handleEvent(self,e): - actions={"setCorners":self.setCorners, "setTresholds":self.setTresholds} + actions={ + "setCorners": self.setCorners, + "setTresholds": self.setTresholds, + "prevFrame": lambda: self.relativeFrame(-1), + "nextFrame": lambda: self.relativeFrame(1) + } (actionName,args,kwargs)=e return actions[actionName](*args,**kwargs)