import multiprocessing
import PIL
from corners import Corners
from gui import gui
class Core:
corners=Corners()
tresW=60.0
tresB=30.0
@staticmethod
def setCorners(corners):
Core.corners=corners
@staticmethod
def setTresholds(tresB=None,tresW=None):
if tresB is not None: Core.tresB=tresB
if tresW is not None: Core.tresW=tresW
msgQueue=multiprocessing.Queue()
guiQueue=multiprocessing.Queue()
incomingEvent=multiprocessing.Event()
guiEvent=multiprocessing.Event()
frame=PIL.Image.open("../images/7.jpg")
guiProc=multiprocessing.Process(name="gui",target=gui,args=(guiQueue,guiEvent,msgQueue,incomingEvent))
guiProc.start()
guiQueue.put(("setCurrentFrame",(frame,None),dict()))
guiEvent.set()
while True:
incomingEvent.wait()
msg=msgQueue.get()
if msgQueue.empty():
incomingEvent.clear()
print(msg)
# !! always pass object copies, don't share instances
"""
core
====
corners
grid
go
imageAnalyzer
gui
===
a) keeps references to important objects and uses them
b) gets and sets all relevant data through method calls with core
GUI
<- addCorner(corner)
-> redrawImgView(img,grid)
<- refreshTresholds(tresB,tresW)
BoardView
-> redrawState(go)
"""