Files @ 2bc2ee0a021c
Branch filter:

Location: OneEye/src/gui/__init__.py - annotation

Laman
fixed imgview resizing, passing tresholds to analyzer, passing new state to core
import threading
import tkinter as tk

import config
from .mainwindow import MainWindow
from .boardview import BoardView


class GUI:
	def __init__(self):
		self.root = tk.Tk()
		self.root.title("OneEye {0}.{1}.{2}".format(*config.misc.version))

		self._coreMessages=None

		self.mainWindow = MainWindow(self, master=self.root)
		self.root.columnconfigure(0,weight=1)
		self.root.rowconfigure(0,weight=1)

		self.root.bind("<<redrawImgView>>", lambda e: self.mainWindow.redrawImgView())
		self.root.bind("<<receiveState>>", lambda e: print("fired receiveState"))

	def __call__(self,ownMessages,coreMessages):
		self._coreMessages=coreMessages

		self.listenerThread=threading.Thread(target=lambda: ownMessages.listen(self._handleEvent))
		self.listenerThread.start()

		self.mainWindow.mainloop()

	def sendMsg(self,actionName,args=tuple(),kwargs=None):
		self._coreMessages.send(actionName,args,kwargs)

	def _handleEvent(self,e):
		actions={"setCurrentFrame":self._frameHandler, "setGameState":self._stateHandler}
		(actionName,args,kwargs)=e

		return actions[actionName](*args,**kwargs)

	def _frameHandler(self,newFrame):
		self.mainWindow.setCurrentFrame(newFrame)
		self.root.event_generate("<<redrawImgView>>")

	def _stateHandler(self,gameState):
		self.mainWindow.boardView.redrawState(gameState)

gui=GUI()