Files @ 6f9ec51a8142
Branch filter:

Location: OneEye/src/gui/mainwindow.py

Laman
moving responsibilities
GUI got its own ImageAnalyzer instance for doing previews
accordingly changed APIs to keep only useful messages
ImageAnalyzer params wrapped in a separate class
import tkinter as tk
from tkinter import N,S,E,W

from .util import MsgMixin
from .menu import MainMenu
from .boardview import BoardView
from .imgview import ImgView
from .statusbar import StatusBar


class MainWindow(tk.Frame,MsgMixin):
	def __init__(self,parent,master=None):
		self.parent=parent

		tk.Frame.__init__(self, master)
		self.grid(column=0,row=0,sticky=(N,S,E,W))
		self._createWidgets()

	def setCurrentFrame(self,frame):
		self.imgView.setImg(frame)

	def _createWidgets(self):
		# menu
		self.parent.root.option_add('*tearOff',False)
		self._menu=MainMenu(self.parent,self.parent.root)

		# a captured frame with overlay graphics
		self._imgWrapper=tk.Frame(self,width=480,height=360)
		self.imgView=ImgView(self._imgWrapper,self)

		self._imgWrapper.grid(column=0,row=0,sticky=(N,S,E,W))

		# board with detected stones
		self._boardWrapper=tk.Frame(self,width=360,height=360)
		self.boardView=BoardView(self._boardWrapper)
		self._boardWrapper.grid(column=1,row=0,sticky=(N,S,E,W))

		self.columnconfigure(0,weight=1)
		self.columnconfigure(1,weight=1)
		self.rowconfigure(0,weight=1)

		self._statusBar=StatusBar(self)
		self._statusBar.grid(column=0,row=1,columnspan=2,sticky=(S,E,W))

		self.rowconfigure(1,weight=0)

		# render everything
		self.imgView.redraw()

	## Redraws the current image and its overlay.
	def redrawImgView(self):
		self.imgView.redraw()

	def setUp(self):
		self._statusBar.setUp()
		self.imgView.setUp()

	def setRecording(self):
		self._statusBar.setRecording()
		self.imgView.setRecording()