sep settings pages, eyelid visualizations

This commit is contained in:
Prohurtz 2023-05-31 19:37:16 -05:00
parent 4c0c907a07
commit 507283ed7e
6 changed files with 27 additions and 411 deletions

View File

@ -49,61 +49,7 @@ class AlgoSettingsWidget:
# Define the window's contents # Define the window's contents
self.general_settings_layout = [ self.general_settings_layout = [
[
sg.Checkbox(
"Flip Left Eye X Axis",
default=self.config.gui_flip_x_axis_left,
key=self.gui_flip_x_axis_left,
background_color='#424042',
tooltip = "Flips the left eye's X axis.",
),
sg.Checkbox(
"Flip Right Eye X Axis",
default=self.config.gui_flip_x_axis_right,
key=self.gui_flip_x_axis_right,
background_color='#424042',
tooltip = "Flips the right eye's X axis.",
),
# ],
#[
sg.Checkbox(
"Flip Y Axis",
default=self.config.gui_flip_y_axis,
key=self.gui_flip_y_axis,
background_color='#424042',
tooltip = "Flips the eye's Y axis.",
),
],
[sg.Checkbox(
"VRC Native Eyetracking",
default=self.config.gui_vrc_native,
key=self.gui_vrc_native,
background_color='#424042',
tooltip = "Toggle VRCFT output or VRC native",
),
sg.Checkbox(
"Dual Eye Falloff",
default=self.config.gui_eye_falloff,
key=self.gui_eye_falloff,
background_color='#424042',
tooltip = "If one eye stops tracking, we send tracking data from your other eye.",
),
],
[sg.Checkbox(
"Check For Updates",
default=self.config.gui_update_check,
key=self.gui_update_check,
background_color='#424042',
tooltip = "Toggle update check on launch.",
),
],
[
sg.Text("Tracking Algorithim Settings:", background_color='#242224'),
],
[sg.Checkbox( [sg.Checkbox(
"", "",
@ -294,7 +240,7 @@ class AlgoSettingsWidget:
self.widget_layout = [ self.widget_layout = [
[ [
sg.Text("General Settings:", background_color='#242224'), sg.Text("Tracking Algorithm Settings:", background_color='#242224'),
], ],
[ [
sg.Column(self.general_settings_layout, key=self.gui_general_settings_layout, background_color='#424042' ), sg.Column(self.general_settings_layout, key=self.gui_general_settings_layout, background_color='#424042' ),
@ -325,57 +271,6 @@ class AlgoSettingsWidget:
# If anything has changed in our configuration settings, change/update those. # If anything has changed in our configuration settings, change/update those.
changed = False changed = False
if self.config.gui_osc_port != int(values[self.gui_osc_port]):
print(self.config.gui_osc_port, values[self.gui_osc_port])
try:
int(values[self.gui_osc_port])
if len(values[self.gui_osc_port]) <= 5:
self.config.gui_osc_port = int(values[self.gui_osc_port])
changed = True
else:
print("\033[91m[ERROR] OSC port value must be an integer 0-65535\033[0m")
except:
print("\033[91m[ERROR] OSC port value must be an integer 0-65535\033[0m")
if self.config.gui_osc_receiver_port != int(values[self.gui_osc_receiver_port]):
try:
int(values[self.gui_osc_receiver_port])
if len(values[self.gui_osc_receiver_port]) <= 5:
self.config.gui_osc_receiver_port = int(values[self.gui_osc_receiver_port])
changed = True
else:
print("\033[91m[ERROR] OSC receive port value must be an integer 0-65535\033[0m")
except:
print("\033[91m[ERROR] OSC receive port value must be an integer 0-65535\033[0m")
if self.config.gui_osc_address != values[self.gui_osc_address]:
self.config.gui_osc_address = values[self.gui_osc_address]
changed = True
if self.config.gui_osc_recenter_address != values[self.gui_osc_recenter_address]:
self.config.gui_osc_recenter_address = values[self.gui_osc_recenter_address]
changed = True
if self.config.gui_osc_recalibrate_address != values[self.gui_osc_recalibrate_address]:
self.config.gui_osc_recalibrate_address = values[self.gui_osc_recalibrate_address]
changed = True
if self.config.gui_min_cutoff != values[self.gui_min_cutoff]:
self.config.gui_min_cutoff = values[self.gui_min_cutoff]
changed = True
if self.config.gui_speed_coefficient != values[self.gui_speed_coefficient]:
self.config.gui_speed_coefficient = values[self.gui_speed_coefficient]
changed = True
if self.config.gui_flip_x_axis_right != values[self.gui_flip_x_axis_right]:
self.config.gui_flip_x_axis_right = values[self.gui_flip_x_axis_right]
changed = True
if self.config.gui_flip_x_axis_left != values[self.gui_flip_x_axis_left]:
self.config.gui_flip_x_axis_left = values[self.gui_flip_x_axis_left]
changed = True
if self.config.gui_HSFP != int(values[self.gui_HSFP]): if self.config.gui_HSFP != int(values[self.gui_HSFP]):
self.config.gui_HSFP = int(values[self.gui_HSFP]) self.config.gui_HSFP = int(values[self.gui_HSFP])
changed = True changed = True
@ -384,10 +279,6 @@ class AlgoSettingsWidget:
self.config.gui_HSF = values[self.gui_HSF] self.config.gui_HSF = values[self.gui_HSF]
changed = True changed = True
if self.config.gui_vrc_native != values[self.gui_vrc_native]:
self.config.gui_vrc_native = values[self.gui_vrc_native]
changed = True
if self.config.gui_DADDYP != int(values[self.gui_DADDYP]): if self.config.gui_DADDYP != int(values[self.gui_DADDYP]):
self.config.gui_DADDYP = int(values[self.gui_DADDYP]) self.config.gui_DADDYP = int(values[self.gui_DADDYP])
changed = True changed = True
@ -415,10 +306,6 @@ class AlgoSettingsWidget:
if self.config.gui_skip_autoradius != values[self.gui_skip_autoradius]: if self.config.gui_skip_autoradius != values[self.gui_skip_autoradius]:
self.config.gui_skip_autoradius = values[self.gui_skip_autoradius] self.config.gui_skip_autoradius = values[self.gui_skip_autoradius]
changed = True changed = True
if self.config.gui_update_check != values[self.gui_update_check]:
self.config.gui_update_check = values[self.gui_update_check]
changed = True
if self.config.gui_BLINK != values[self.gui_BLINK]: if self.config.gui_BLINK != values[self.gui_BLINK]:
self.config.gui_BLINK = values[self.gui_BLINK] self.config.gui_BLINK = values[self.gui_BLINK]
@ -440,10 +327,6 @@ class AlgoSettingsWidget:
self.config.gui_HSF_radius = int(values[self.gui_HSF_radius]) self.config.gui_HSF_radius = int(values[self.gui_HSF_radius])
changed = True changed = True
if self.config.gui_flip_y_axis != values[self.gui_flip_y_axis]:
self.config.gui_flip_y_axis = values[self.gui_flip_y_axis]
changed = True
if self.config.gui_BLOB != values[self.gui_BLOB]: if self.config.gui_BLOB != values[self.gui_BLOB]:
self.config.gui_BLOB = values[self.gui_BLOB] self.config.gui_BLOB = values[self.gui_BLOB]
changed = True changed = True
@ -459,22 +342,11 @@ class AlgoSettingsWidget:
if self.config.gui_thresh_add != values[self.gui_thresh_add]: if self.config.gui_thresh_add != values[self.gui_thresh_add]:
self.config.gui_thresh_add = int(values[self.gui_thresh_add]) self.config.gui_thresh_add = int(values[self.gui_thresh_add])
changed = True changed = True
if self.config.gui_eye_falloff != values[self.gui_eye_falloff]:
self.config.gui_eye_falloff = values[self.gui_eye_falloff]
changed = True
if self.config.gui_blob_maxsize != values[self.gui_blob_maxsize]: if self.config.gui_blob_maxsize != values[self.gui_blob_maxsize]:
self.config.gui_blob_maxsize = values[self.gui_blob_maxsize] self.config.gui_blob_maxsize = values[self.gui_blob_maxsize]
changed = True changed = True
if self.config.gui_ROSC != values[self.gui_ROSC]:
self.config.gui_ROSC = values[self.gui_ROSC]
changed = True
if changed: if changed:
self.main_config.save() self.main_config.save()
# print(changed) self.osc_queue.put(EyeId.ALGOSETTINGS)
# changed = False
# print(changed)
self.osc_queue.put((EyeId.SETTINGS))

View File

@ -288,7 +288,7 @@ class CameraWidget:
elif self.camera.camera_status == CameraState.CONNECTING: elif self.camera.camera_status == CameraState.CONNECTING:
window[self.gui_mode_readout].update("Camera Connecting") window[self.gui_mode_readout].update("Camera Connecting")
elif self.camera.camera_status == CameraState.DISCONNECTED: elif self.camera.camera_status == CameraState.DISCONNECTED:
window[self.gui_mode_readout].update("CAMERA DISCONNECTED") window[self.gui_mode_readout].update("Camera Reconnecting...")
elif needs_roi_set: elif needs_roi_set:
window[self.gui_mode_readout].update("Awaiting Eye Crop") window[self.gui_mode_readout].update("Awaiting Eye Crop")
elif self.ransac.calibration_frame_counter != None: elif self.ransac.calibration_frame_counter != None:
@ -351,9 +351,13 @@ class CameraWidget:
fill_color="black", fill_color="black",
line_color="white", line_color="white",
) )
if not np.isnan(eye_info.blink):
graph.draw_line((-100,eye_info.blink * 100), (-100,100), color="black", width=10)
else:
graph.draw_line((-100, 0.0 * 100), (-100, 100), color="black", width=10)
# elif eye_info.blink: if eye_info.blink <= 0.0:
# graph.update(background_color="#6f4ca1") graph.update(background_color="#6f4ca1")
elif eye_info.info_type == EyeInfoOrigin.FAILURE: elif eye_info.info_type == EyeInfoOrigin.FAILURE:
graph.update(background_color="red") graph.update(background_color="red")
# Relay information to OSC # Relay information to OSC

View File

@ -70,6 +70,7 @@ class EyeTrackConfig(BaseModel):
right_eye: EyeTrackCameraConfig = EyeTrackCameraConfig() right_eye: EyeTrackCameraConfig = EyeTrackCameraConfig()
left_eye: EyeTrackCameraConfig = EyeTrackCameraConfig() left_eye: EyeTrackCameraConfig = EyeTrackCameraConfig()
settings: EyeTrackSettingsConfig = EyeTrackSettingsConfig() settings: EyeTrackSettingsConfig = EyeTrackSettingsConfig()
# algo_settings: EyeTrackSettingsConfig = EyeTrackSettingsConfig()
eye_display_id: EyeId = EyeId.RIGHT eye_display_id: EyeId = EyeId.RIGHT
@staticmethod @staticmethod
@ -91,7 +92,7 @@ class EyeTrackConfig(BaseModel):
except json.JSONDecodeError: except json.JSONDecodeError:
pass pass
if load_config is None: if load_config is None:
print("using base settings") print("[INFO] using base settings")
load_config = EyeTrackConfig() load_config = EyeTrackConfig()
return load_config return load_config

View File

@ -9,15 +9,14 @@ from camera_widget import CameraWidget
from config import EyeTrackConfig from config import EyeTrackConfig
from eye import EyeId from eye import EyeId
from osc import VRChatOSCReceiver, VRChatOSC from osc import VRChatOSCReceiver, VRChatOSC
from settings_widget import SettingsWidget from general_settings_widget import SettingsWidget
from algo_settings_widget import AlgoSettingsWidget from algo_settings_widget import AlgoSettingsWidget
from utils.misc_utils import is_nt from utils.misc_utils import is_nt
if is_nt: if is_nt:
from winotify import Notification from winotify import Notification
os.system('color') # init ANSI color os.system('color') # init ANSI color
# Random environment variable to speed up webcam opening on the MSMF backend. # Random environment variable to speed up webcam opening on the MSMF backend.
# https://github.com/opencv/opencv/issues/17687 # https://github.com/opencv/opencv/issues/17687
@ -55,7 +54,7 @@ def main():
) )
latestversion = response.json()["name"] latestversion = response.json()["name"]
if ( if (
appversion == latestversion appversion == latestversion
): # If what we scraped and hardcoded versions are same, assume we are up to date. ): # If what we scraped and hardcoded versions are same, assume we are up to date.
print(f"\033[92m[INFO] App is the latest version! [{latestversion}]\033[0m") print(f"\033[92m[INFO] App is the latest version! [{latestversion}]\033[0m")
else: else:
@ -96,12 +95,12 @@ def main():
settings = [ settings = [
SettingsWidget(EyeId.SETTINGS, config, osc_queue), SettingsWidget(EyeId.SETTINGS, config, osc_queue),
AlgoSettingsWidget(EyeId.SETTINGS, config, osc_queue), AlgoSettingsWidget(EyeId.ALGOSETTINGS, config, osc_queue),
] ]
layout = [ layout = [
[ [
sg.Radio( sg.Radio(
"Left Eye", "Left Eye",
"EYESELECTRADIO", "EYESELECTRADIO",
background_color="#292929", background_color="#292929",
@ -177,7 +176,7 @@ def main():
settings[0].start() settings[0].start()
if config.eye_display_id in [EyeId.ALGOSETTINGS]: if config.eye_display_id in [EyeId.ALGOSETTINGS]:
settings[1].start() settings[1].start()
#self.main_config.eye_display_id # self.main_config.eye_display_id
# the eye's needs to be running before it is passed to the OSC # the eye's needs to be running before it is passed to the OSC
if config.settings.gui_ROSC: if config.settings.gui_ROSC:
@ -264,6 +263,8 @@ def main():
window[ALGO_SETTINGS_NAME].update(visible=False) window[ALGO_SETTINGS_NAME].update(visible=False)
config.eye_display_id = EyeId.SETTINGS config.eye_display_id = EyeId.SETTINGS
config.save() config.save()
print("EE")
elif values[ALGO_SETTINGS_RADIO_NAME] and config.eye_display_id != EyeId.ALGOSETTINGS: elif values[ALGO_SETTINGS_RADIO_NAME] and config.eye_display_id != EyeId.ALGOSETTINGS:
eyes[0].stop() eyes[0].stop()
@ -276,12 +277,17 @@ def main():
window[ALGO_SETTINGS_NAME].update(visible=True) window[ALGO_SETTINGS_NAME].update(visible=True)
config.eye_display_id = EyeId.ALGOSETTINGS config.eye_display_id = EyeId.ALGOSETTINGS
config.save() config.save()
print("Easljghk")
# Otherwise, render all of our cameras # Otherwise, render all
for eye in eyes: for eye in eyes:
if eye.started(): if eye.started():
eye.render(window, event, values) eye.render(window, event, values)
settings[0].render(window, event, values) for setting in settings:
if setting.started():
setting.render(window, event, values)
# settings[0].render(window, event, values)
# settings[1].render(window, event, values)
if __name__ == "__main__": if __name__ == "__main__":

View File

@ -99,195 +99,6 @@ class SettingsWidget:
tooltip = "Toggle update check on launch.", tooltip = "Toggle update check on launch.",
), ),
], ],
[
sg.Text("Tracking Algorithim Settings:", background_color='#242224'),
],
[sg.Checkbox(
"",
default=self.config.gui_HSRAC,
key=self.gui_HSRAC,
background_color='#424042',
tooltip = "Our flagship algoritim, utilizing both HSF and RANSAC for best tracking quality and lighting resistance.",
),
sg.Combo(['1','2','3','4'],
default_value=self.config.gui_HSRACP,
key=self.gui_HSRACP,
background_color='#424042',
text_color='white',
button_arrow_color= "black",
button_background_color = "#6f4ca1",
tooltip = "Select the priority of eyetracking algorithims.",
),
sg.Text("HSRAC", background_color='#424042'),
# ],
# [
sg.Checkbox(
"",
default=self.config.gui_HSF,
key=self.gui_HSF,
background_color='#424042',
tooltip = "HSF Is a new, lower resolution tracking algorithim that provides excelent resilancy to lighting conditions and great speed.",
),
sg.Combo(['1','2','3','4','5'],
default_value=self.config.gui_HSFP,
key=self.gui_HSFP,
background_color='#424042',
text_color='white',
button_arrow_color= "black",
button_background_color = "#6f4ca1",
tooltip = "Select the priority of eyetracking algorithims.",
),
sg.Text("Haar Surround Feature", background_color='#424042'),
],
[sg.Checkbox(
"",
default=self.config.gui_DADDY,
key=self.gui_DADDY,
background_color='#424042',
tooltip = "DADDY Uses a Deep learning algorithm. This has a big CPU usage impact.",
),
sg.Combo(['1','2','3','4','5'],
default_value=self.config.gui_DADDYP,
key=self.gui_DADDYP,
background_color='#424042',
text_color='white',
button_arrow_color= "black",
button_background_color = "#6f4ca1",
tooltip = "Select the priority of eyetracking algorithims.",
),
sg.Text("DADDY", background_color='#424042'),
# ],
# [
sg.Checkbox(
"",
default=self.config.gui_RANSAC3D,
key=self.gui_RANSAC3D,
background_color='#424042',
tooltip = "RANSAC3D provides good tracking quality, however does not do well in bad lighting conditions.",
),
sg.Combo(['1','2','3','4','5'],
default_value=self.config.gui_RANSAC3DP,
key=self.gui_RANSAC3DP,
background_color='#424042',
text_color='white',
button_arrow_color= "black",
button_background_color = "#6f4ca1",
tooltip = "Select the priority of eyetracking algorithims.",
),
sg.Text("RANSAC 3D", background_color='#424042'),
],
[
sg.Checkbox(
"",
default=self.config.gui_BLOB,
key=self.gui_BLOB,
background_color='#424042',
tooltip = "Blob tracking is the oldest and worst tracking algorithm, it provides fast, though sometimes innaccurate tracking.",
),
sg.Combo(['1','2','3','4','5'],
default_value=self.config.gui_BLOBP,
key=self.gui_BLOBP,
background_color='#424042',
text_color='white',
button_arrow_color= "black",
button_background_color = "#6f4ca1",
tooltip = "Select the priority of eyetracking algorithims.",
),
sg.Text("Blob", background_color='#424042'),
],
[
sg.Checkbox(
"Intensity Based Openness",
default=self.config.gui_IBO,
key=self.gui_IBO,
background_color='#424042',
),
sg.Checkbox(
"Bianary Blink Algo",
default=self.config.gui_BLINK,
key=self.gui_BLINK,
background_color='#424042',
),
],
[
sg.Checkbox(
"Left Eye Circle crop",
default=self.config.gui_circular_crop_left,
key=self.gui_circular_crop_left,
background_color='#424042',
),
sg.Checkbox(
"Right Eye Circle crop",
default=self.config.gui_circular_crop_right,
key=self.gui_circular_crop_right,
background_color='#424042',
),
],
[sg.Checkbox(
"HSF: Skip Auto Radius",
default=self.config.gui_skip_autoradius,
key=self.gui_skip_autoradius,
background_color='#424042',
tooltip = "To gain more control and possibly better tracking quality of HSF, please disable auto radius to enable manual adjustment.",
),
sg.Text("HSF Radius:", background_color='#424042'),
sg.Slider(
range=(1, 50),
default_value=self.config.gui_HSF_radius,
orientation="h",
key=self.gui_HSF_radius,
background_color='#424042',
tooltip = "Adjusts the radius paramater for HSF. Only adjust if you are having tracking issues.",
),
],
[sg.Text("RANSAC Thresh Add", background_color='#424042'),
sg.Slider(
range=(1, 50),
default_value=self.config.gui_thresh_add,
orientation="h",
key=self.gui_thresh_add,
background_color='#424042',
tooltip = "Adjusts the ammount of threshold to add to RANSAC. Usefull for fine tuning your setup.",
),
# ],
# [
sg.Text("Blob Threshold", background_color='#424042'), #TODO make this for right and left eyes? I dont know how vital that is..
sg.Slider(
range=(0, 110),
default_value=self.config.gui_threshold,
orientation="h",
key=self.gui_threshold_slider,
background_color='#424042',
tooltip = "Adjusts the threshold for blob tracking.",
),
],
[sg.Text("Min Blob Size:", background_color='#424042'),
sg.Slider(
range=(1, 50),
default_value=self.config.gui_blob_minsize,
orientation="h",
key=self.gui_blob_minsize,
background_color='#424042',
tooltip = "Minimun size a blob has to be for blob tracking.",
),
sg.Text("Max Blob Size:", background_color='#424042'),
sg.Slider(
range=(1, 50),
default_value=self.config.gui_blob_maxsize,
orientation="h",
key=self.gui_blob_maxsize,
background_color='#424042',
tooltip = "Maximum size a blob can be for blob tracking.",
),
],
[ [
sg.Text("One Euro Filter Paramaters:", background_color='#242224'), sg.Text("One Euro Filter Paramaters:", background_color='#242224'),
], ],
@ -456,105 +267,26 @@ class SettingsWidget:
self.config.gui_flip_x_axis_left = values[self.gui_flip_x_axis_left] self.config.gui_flip_x_axis_left = values[self.gui_flip_x_axis_left]
changed = True changed = True
if self.config.gui_HSFP != int(values[self.gui_HSFP]):
self.config.gui_HSFP = int(values[self.gui_HSFP])
changed = True
if self.config.gui_HSF != values[self.gui_HSF]:
self.config.gui_HSF = values[self.gui_HSF]
changed = True
if self.config.gui_vrc_native != values[self.gui_vrc_native]: if self.config.gui_vrc_native != values[self.gui_vrc_native]:
self.config.gui_vrc_native = values[self.gui_vrc_native] self.config.gui_vrc_native = values[self.gui_vrc_native]
changed = True changed = True
if self.config.gui_DADDYP != int(values[self.gui_DADDYP]):
self.config.gui_DADDYP = int(values[self.gui_DADDYP])
changed = True
if self.config.gui_DADDY != values[self.gui_DADDY]:
self.config.gui_DADDY = values[self.gui_DADDY]
changed = True
if self.config.gui_RANSAC3DP != int(values[self.gui_RANSAC3DP]): #TODO check that priority order is unique/auto fix it.
self.config.gui_RANSAC3DP = int(values[self.gui_RANSAC3DP])
changed = True
if self.config.gui_RANSAC3D != values[self.gui_RANSAC3D]:
self.config.gui_RANSAC3D = values[self.gui_RANSAC3D]
changed = True
if self.config.gui_HSRACP != int(values[self.gui_HSRACP]):
self.config.gui_HSRACP = int(values[self.gui_HSRACP])
changed = True
if self.config.gui_HSRAC != values[self.gui_HSRAC]:
self.config.gui_HSRAC = values[self.gui_HSRAC]
changed = True
if self.config.gui_skip_autoradius != values[self.gui_skip_autoradius]:
self.config.gui_skip_autoradius = values[self.gui_skip_autoradius]
changed = True
if self.config.gui_update_check != values[self.gui_update_check]: if self.config.gui_update_check != values[self.gui_update_check]:
self.config.gui_update_check = values[self.gui_update_check] self.config.gui_update_check = values[self.gui_update_check]
changed = True changed = True
if self.config.gui_BLINK != values[self.gui_BLINK]:
self.config.gui_BLINK = values[self.gui_BLINK]
changed = True
if self.config.gui_IBO != values[self.gui_IBO]:
self.config.gui_IBO = values[self.gui_IBO]
changed = True
if self.config.gui_circular_crop_left != values[self.gui_circular_crop_left]:
self.config.gui_circular_crop_left = values[self.gui_circular_crop_left]
changed = True
if self.config.gui_circular_crop_right != values[self.gui_circular_crop_right]:
self.config.gui_circular_crop_right = values[self.gui_circular_crop_right]
changed = True
if self.config.gui_HSF_radius != int(values[self.gui_HSF_radius]):
self.config.gui_HSF_radius = int(values[self.gui_HSF_radius])
changed = True
if self.config.gui_flip_y_axis != values[self.gui_flip_y_axis]: if self.config.gui_flip_y_axis != values[self.gui_flip_y_axis]:
self.config.gui_flip_y_axis = values[self.gui_flip_y_axis] self.config.gui_flip_y_axis = values[self.gui_flip_y_axis]
changed = True changed = True
if self.config.gui_BLOB != values[self.gui_BLOB]:
self.config.gui_BLOB = values[self.gui_BLOB]
changed = True
if self.config.gui_BLOBP != int(values[self.gui_BLOBP]):
self.config.gui_BLOBP = int(values[self.gui_BLOBP])
changed = True
if self.config.gui_threshold != values[self.gui_threshold_slider]:
self.config.gui_threshold = int(values[self.gui_threshold_slider])
changed = True
if self.config.gui_thresh_add != values[self.gui_thresh_add]:
self.config.gui_thresh_add = int(values[self.gui_thresh_add])
changed = True
if self.config.gui_eye_falloff != values[self.gui_eye_falloff]: if self.config.gui_eye_falloff != values[self.gui_eye_falloff]:
self.config.gui_eye_falloff = values[self.gui_eye_falloff] self.config.gui_eye_falloff = values[self.gui_eye_falloff]
changed = True changed = True
if self.config.gui_blob_maxsize != values[self.gui_blob_maxsize]:
self.config.gui_blob_maxsize = values[self.gui_blob_maxsize]
changed = True
if self.config.gui_ROSC != values[self.gui_ROSC]: if self.config.gui_ROSC != values[self.gui_ROSC]:
self.config.gui_ROSC = values[self.gui_ROSC] self.config.gui_ROSC = values[self.gui_ROSC]
changed = True changed = True
if changed: if changed:
self.main_config.save() self.main_config.save()
# print(changed)
# changed = False
# print(changed)
self.osc_queue.put((EyeId.SETTINGS)) self.osc_queue.put((EyeId.SETTINGS))

View File

@ -13,6 +13,7 @@ class EyeId(IntEnum):
LEFT = 1 LEFT = 1
BOTH = 2 BOTH = 2
SETTINGS = 3 SETTINGS = 3
ALGOSETTINGS = 4
from config import EyeTrackConfig from config import EyeTrackConfig
se = False se = False