diff --git a/src/core.py b/src/core.py new file mode 100644 --- /dev/null +++ b/src/core.py @@ -0,0 +1,64 @@ +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) +""" \ No newline at end of file