fishyboteso/fishy/engine/common/IEngine.py
2020-10-18 00:36:07 +05:30

36 lines
754 B
Python

import typing
from abc import ABC, abstractmethod
from threading import Thread
from typing import Callable
from fishy.gui.funcs import GUIFuncsMock
if typing.TYPE_CHECKING:
from fishy.gui import GUI
class IEngine(ABC):
def __init__(self, gui_ref: 'Callable[[], GUI]'):
self.get_gui = gui_ref
self.start = False
self.window = None
self.thread = None
@property
def gui(self):
if self.get_gui is None:
return GUIFuncsMock()
return self.get_gui().funcs
def toggle_start(self):
self.start = not self.start
if self.start:
self.thread = Thread(target=self.run)
self.thread.start()
@abstractmethod
def run(self):
...