diff --git a/src/gui/__init__.py b/src/gui/__init__.py --- a/src/gui/__init__.py +++ b/src/gui/__init__.py @@ -1,4 +1,6 @@ -import logging +import os +import json +import logging import threading import tkinter as tk @@ -6,6 +8,7 @@ import config from .mainwindow import MainWindow from .boardview import BoardView from .settings import Settings +from util import exportBoard log=logging.getLogger(__name__) @@ -23,6 +26,8 @@ class GUI: self._coreMessages=None self._state=GUI.SETUP + self._board=[] + self._filename="" self.mainWindow = MainWindow(self, master=self.root) self.settings=None @@ -33,6 +38,7 @@ class GUI: self.root.bind("<>", lambda e: self.setUp()) self.root.bind("<>", lambda e: self.setRecording()) self.root.bind("",lambda e: Settings(self)) + self.root.bind("s",lambda e: self._save()) self.mainWindow.bind("",lambda e: self._ownMessages.send("!kill",("gui",))) self.setUp() @@ -62,6 +68,18 @@ class GUI: self.settings.destroy() self.settings=None + def _save(self): + board=exportBoard(self._board) + corners=[[p.x,p.y] for p in self.mainWindow.imgView.exportCorners()] + res={ + self._filename: { + "board": board, + "corners": corners + } + } + with open(os.path.join(config.misc.imgDir,self._filename+".json"), mode="wt") as f: + json.dump(res,f,indent="\t") + def _handleEvent(self,e): actions={ "setCurrentFrame": self._frameHandler, @@ -72,13 +90,15 @@ class GUI: return actions[actionName](*args,**kwargs) - def _frameHandler(self,newFrame,type): + def _frameHandler(self,newFrame,type,filename): if self._state!=type: return + self._filename=filename self.mainWindow.setCurrentFrame(newFrame) self.root.event_generate("<>") def _stateHandler(self,gameState,moves): labels={(row,col):(i+1) for (i,(c,row,col)) in enumerate(moves)} + self._board=gameState self.mainWindow.boardView.redrawState(gameState,labels) def _paramsHandler(self,**params):