Changeset - 5f2136fcbebd
[Not reviewed]
default
0 3 2
Laman - 7 years ago 2017-12-27 10:49:50

moved detector sliders into separate settings
5 files changed with 67 insertions and 34 deletions:
0 comments (0 inline, 0 general)
src/gui/__init__.py
Show inline comments
 
@@ -4,6 +4,7 @@ import tkinter as tk
 
import config
 
from .mainwindow import MainWindow
 
from .boardview import BoardView
 
from .settings import Settings
 

	
 

	
 
class GUI:
 
@@ -21,6 +22,7 @@ class GUI:
 
		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"))
 
		self.root.bind("<F12>",lambda e: Settings(self))
 

	
 
	def __call__(self,ownMessages,coreMessages):
 
		self._coreMessages=coreMessages
src/gui/mainwindow.py
Show inline comments
 
import tkinter as tk
 
from tkinter import N,S,E,W
 

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

	
 

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

	
 
@@ -14,17 +15,13 @@ class MainWindow(tk.Frame):
 
		self.grid(column=0,row=0,sticky=(N,S,E,W))
 
		self._createWidgets()
 

	
 
		self.bind("<Left>",lambda e: self.sendMsg("prevFrame"))
 
		self.bind("<Right>",lambda e: self.sendMsg("nextFrame"))
 

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

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

	
 
		# a captured frame with overlay graphics
 
		self._imgWrapper=tk.Frame(self,width=480,height=360)
 
@@ -37,14 +34,6 @@ class MainWindow(tk.Frame):
 
		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)
 
@@ -55,9 +44,3 @@ class MainWindow(tk.Frame):
 
	## 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)
src/gui/menu.py
Show inline comments
 
from tkinter import Menu
 

	
 
import tkinter as tk
 

	
 
def createTopBar(root):
 
	menubar = Menu(root)
 
	root['menu'] = menubar
 
	return menubar
 
from .util import MsgMixin
 
from .settings import Settings
 

	
 

	
 
def createMainMenu(menubar):
 
	file = Menu(menubar)
 
	_help = Menu(menubar)
 
	menubar.add_cascade(menu=file, label='File')
 
	menubar.add_cascade(menu=_help, label='Help')
 
class MainMenu(MsgMixin):
 
	def __init__(self,parent,root):
 
		self.root=root
 
		self.parent=parent
 
		self._createWidgets()
 

	
 
	def _createWidgets(self):
 
		bar=self._createTopBar()
 

	
 
	file.add_command(label="Settings")
 
		file = tk.Menu(bar)
 
		help_ = tk.Menu(bar)
 
		bar.add_cascade(menu=file, label='File')
 
		bar.add_cascade(menu=help_, label='Help')
 

	
 
		file.add_command(label="Settings",command=lambda: Settings(self.parent))
 

	
 
	_help.add_command(label="About")
 
		help_.add_command(label="About")
 

	
 
	def _createTopBar(self):
 
		menubar = tk.Menu(self.root)
 
		self.root['menu'] = menubar
 
		return menubar
src/gui/settings.py
Show inline comments
 
new file 100644
 
import tkinter as tk
 
from tkinter import N,S,E,W
 

	
 
from .util import MsgMixin
 

	
 

	
 
class Settings(tk.Toplevel,MsgMixin):
 
	def __init__(self,parent):
 
		self.parent=parent
 

	
 
		tk.Toplevel.__init__(self, parent.root)
 

	
 
		self.title("Settings | OneEye")
 

	
 
		self.columnconfigure(0,weight=1)
 
		self.content=tk.Frame(self)
 
		self.content.grid(column=0,row=0,sticky=(N,S,E,W))
 
		self.content.columnconfigure(0,weight=1)
 
		self._create()
 

	
 
	def _create(self):
 
		self.scaleTresB=tk.Scale(self.content, orient=tk.HORIZONTAL, length=200, from_=0.0, to=100.0, command=self.refreshTresholds)
 
		self.scaleTresW=tk.Scale(self.content, 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)
 

	
 
		blackLabel=tk.Label(self.content,text="Black stone treshold (intensity)")
 
		whiteLabel=tk.Label(self.content,text="White stone treshold (intensity)")
 
		blackLabel.grid(column=0,row=0)
 
		self.scaleTresB.grid(column=0,row=1,sticky=(E,W))
 
		whiteLabel.grid(column=0,row=2)
 
		self.scaleTresW.grid(column=0,row=3,sticky=(E,W))
 

	
 
	def refreshTresholds(self,_):
 
		self.parent.sendMsg("setTresholds",tuple(),{"tresB":self.scaleTresB.get(), "tresW":self.scaleTresW.get()})
src/gui/util.py
Show inline comments
 
new file 100644
 
class MsgMixin:
 
	def sendMsg(self,actionName,args=tuple(),kwargs=None):
 
		self.parent.sendMsg(actionName,args,kwargs)
0 comments (0 inline, 0 general)