Files @ 2bc2ee0a021c
Branch filter:

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

Laman
fixed imgview resizing, passing tresholds to analyzer, passing new state to core
import tkinter as tk
from tkinter import N,S,E,W

from .boardview import BoardView
from .imgview import ImgView


class MainWindow(tk.Frame):
	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):
		# 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))

		# more controls below the board
		self.scaleTresB=tk.Scale(self, orient=tk.HORIZONTAL, length=200, from_=0.0, to=100.0, command=self.refreshTresholds)
		self.scaleTresW=tk.Scale(self, orient=tk.HORIZONTAL, length=200, from_=0.0, to=100.0, command=self.refreshTresholds)
		self.scaleTresB.set(30.0) # !! proper defaults
		self.scaleTresW.set(60.0)
		self.scaleTresB.grid(column=0,row=1,columnspan=2)
		self.scaleTresW.grid(column=0,row=2,columnspan=2)

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

		# render everything
		self.imgView.redraw()

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

	def refreshTresholds(self,_):
		self.parent.sendMsg("setTresholds",tuple(),{"tresB":self.scaleTresB.get(), "tresW":self.scaleTresW.get()})

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