Files @ 3798475f45c1
Branch filter:

Location: OneEye/src/gui/__init__.py

Laman
refactoring: moving files around
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("<Left>",lambda e: self.sendMsg("prevFrame"))
		self.root.bind("<Right>",lambda e: self.sendMsg("nextFrame"))

	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()