-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathstartup_demo_scripts.py
154 lines (125 loc) · 6.28 KB
/
startup_demo_scripts.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
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
"""
Default startup for user examples. Invoke the startup script
in demo_scripts.
"""
import sys
import os
import inspect
import importlib
# Set scripts 'path' to your repo location
# NOTE: This needs to be done before importing custom libraries
this_dir = os.path.dirname(os.path.abspath(inspect.getfile(inspect.currentframe())))
if this_dir not in sys.path:
sys.path.append(this_dir)
import qtm
from helpers.printing import try_print_except
from helpers.menu_tools import add_command
try:
import demo_scripts.draw_overlay_advanced as draw_overlay_advanced
import demo_scripts.draw_3d_scene_advanced as draw_3d_scene_advanced
import demo_scripts.draw_overlay_basic as draw_overlay_basic
import demo_scripts.draw_3d_scene_basic as draw_3d_scene_basic
import demo_scripts.custom_menu_bar as custom_menu_bar
except ModuleNotFoundError as e:
try_print_except(str(e), "Press 'Reload scripts' to try again.")
# variables
_is_menu_bar_advanced = False
_is_drawing_3d_scene_basic = False
_is_drawing_3d_scene_advanced = False
_is_drawing_arrows_unlabeled_traj = False
_is_drawing_decaying_arrows_unlabeled_traj = False
_is_drawing_overlay_basic = False
_is_drawing_overlay_advanced = False
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# //////// P R I V A T E F U N C T I O N S ////////
# - - - - - - - - - - - - - - - - - - - - - - - - - - -
# region [ COLLAPSE / EXPAND ]
def _reload_script_modules():
# Python's default behaviour is to cache imported scripts. This
# means that changes you make to these scripts will not show up in
# QTM despite pressing the "Reload scripts" button. However, running
# "importlib.reload()" on these scripts will force Python to reload them.
importlib.reload(draw_overlay_advanced)
importlib.reload(draw_3d_scene_advanced)
importlib.reload(draw_overlay_basic)
importlib.reload(draw_3d_scene_basic)
importlib.reload(custom_menu_bar)
def _update_and_draw_callbacks(measurement_time):
# You can set exactly one callback function for drawing in the 3D scene
# (setting a new one replaces the old one). This callback is continuously
# invoked as QTM runs. Although this callback is mainly for updating
# logic & drawing, you're free to do more as long as it's within this function.
# This function must receive the 'measurement_time' variable.
# The draw order between Overlay(2D) and 3D matters; make sure to draw
# the overlay after the 3D objects. On the contrary, the draw order of
# the 3D objects does not matter as this is handled internally by QTM.
# 3D
if globals()["_is_drawing_3d_scene_basic"]:
draw_3d_scene_basic.update_and_draw_scene()
if globals()["_is_drawing_3d_scene_advanced"]:
draw_3d_scene_advanced.update_and_draw_scene(measurement_time)
if globals()["_is_drawing_decaying_arrows_unlabeled_traj"]:
draw_3d_scene_advanced.update_and_draw_decaying_arrows_unlabeled_traj(measurement_time)
if globals()["_is_drawing_arrows_unlabeled_traj"]:
draw_3d_scene_advanced.update_and_draw_arrows_unlabeled_traj(measurement_time)
# Overlay
if globals()["_is_drawing_overlay_basic"]:
draw_overlay_basic.update_and_draw_overlay(measurement_time)
if globals()["_is_drawing_overlay_advanced"]:
draw_overlay_advanced.update_and_draw_overlay(measurement_time)
def _toggle_menu_script_example():
try:
if globals()["_is_menu_bar_advanced"]:
globals()["_is_menu_bar_advanced"] = False
globals()["_is_drawing_3d_scene_advanced"] = False
globals()["_is_drawing_overlay_advanced"] = False
globals()["_is_drawing_arrows_unlabeled_traj"] = False
globals()["_is_drawing_decaying_arrows_unlabeled_traj"] = False
custom_menu_bar.delete()
custom_menu_bar.setup_basic()
else:
globals()["_is_menu_bar_advanced"] = True
globals()["_is_drawing_3d_scene_basic"] = False
globals()["_is_drawing_overlay_basic"] = False
custom_menu_bar.delete()
custom_menu_bar.setup_advanced()
except Exception as e:
try_print_except(str(e), "Press 'Reload scripts' to try again.")
def _toggle_3d_scene_basic():
globals()["_is_drawing_3d_scene_basic"] = not globals()["_is_drawing_3d_scene_basic"]
def _toggle_3d_scene_advanced():
globals()["_is_drawing_3d_scene_advanced"] = not globals()["_is_drawing_3d_scene_advanced"]
def _toggle_drawing_arrows_unlabeled_traj():
globals()["_is_drawing_arrows_unlabeled_traj"] = not globals()["_is_drawing_arrows_unlabeled_traj"]
def _toggle_drawing_decaying_arrows_unlabeled_traj():
globals()["_is_drawing_decaying_arrows_unlabeled_traj"] = not globals()["_is_drawing_decaying_arrows_unlabeled_traj"]
def _toggle_overlay_basic():
globals()["_is_drawing_overlay_basic"] = not globals()["_is_drawing_overlay_basic"]
def _toggle_overlay_advanced():
globals()["_is_drawing_overlay_advanced"] = not globals()["_is_drawing_overlay_advanced"]
def _setup_menu_commands():
add_command("toggle_menu_script_example", lambda: (_toggle_menu_script_example()))
add_command("toggle_3d_scene_basic", lambda: (_toggle_3d_scene_basic()))
add_command("toggle_3d_scene_advanced", lambda: (_toggle_3d_scene_advanced()))
add_command("toggle_drawing_arrows_unlabeled_traj", lambda: (_toggle_drawing_arrows_unlabeled_traj()))
add_command("toggle_drawing_decaying_arrows_unlabeled_traj", lambda: (_toggle_drawing_decaying_arrows_unlabeled_traj()))
add_command("toggle_overlay_basic", lambda: (_toggle_overlay_basic()))
add_command("toggle_overlay_advanced", lambda: (_toggle_overlay_advanced()))
# endregion
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
# //////// E N T R Y P O I N T (local 'main') ////////
# - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
def add_menu():
try:
_reload_script_modules()
print("Modules loaded.")
# Set callback for drawing in the OpenGL window
qtm.gui._3d.set_draw_function(_update_and_draw_callbacks)
# Setup menu commands
_setup_menu_commands()
# Setup menu bar
custom_menu_bar.setup_basic()
except Exception as e:
try_print_except(str(e), "Press 'Reload scripts' to try again.")
if __name__ == '__main__':
add_menu()