-
Notifications
You must be signed in to change notification settings - Fork 0
/
main.py
74 lines (53 loc) · 2.38 KB
/
main.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
# Import lokálních knihoven
from src.fw.platform.platform import Platform
from src.conf.configuration import *
from src.fw.gui.visualization import *
def build_platform():
"""Funkce je odpovědná za vybudování platformy s nastavenou konfigurací.
Instance této platformy je dále vrácena k dalšímu použití."""
return Platform(
assignment_name=assignment(),
unit_fact_loaders=unit_factory_loaders(),
program_loaders=program_loaders(),
runtime_loader=runtime_factory_loaders(),
runtime_change_notification=update_runtime,)
def run_platform(platform: Platform, intro_sleep: float = 0):
"""Funkce je odpovědná za spuštění platformy. V první řadě se provede
volitelné čekání na uvedení všech vláken do požadovaného stavu. Následně
se spustí načítání všech potřebných zdrojů, na které navazuje samotné
spuštění platformy."""
# Lokální import pro zpřehlednění celého modulu
import time
# Mikročekání na připravení všech vláken do provozuschopného stavu
time.sleep(intro_sleep)
# Načtení všech potřebných zdrojů
platform.load()
# Spuštění platformy
platform.run()
# Po ukončení běhu platformy vypni okno
window_close()
def start():
"""Funkce odpovědná za spuštění celého systému. Pokud má být spuštěn bez
grafického rozhraní, bude platforma spuštěna v hlavním vlákně, jinak bude
v hlavním vlákně spuštěno okno grafického rozhraní a platforma bude běžet
v nově vytvořeném strašidlu."""
"""Vybudovaná platforma, která bude spuštěna"""
platform = build_platform()
"""Pokud má být spuštěno grafické rozhraní, musí být platforma spuštěna
v samostatném vlákně."""
if start_gui():
"""Vlákno platformy je prohlášeno za strašidlo, aby bylo možné
přerušit běh vypnutím okna GUI."""
import threading
p_thread = threading.Thread(target=run_platform, args=(platform, 0.5))
p_thread.setDaemon(True)
p_thread.start()
"""Spuštění grafického rozhraní"""
build_graphical_interface(platform)
else:
"""Spuštění platformy v hlavním vlákně"""
run_platform(platform)
"""V obou případech vytvoř výstup"""
build_outputs(platform)
if __name__ == "__main__":
start()