EyeTrackVR/EyeTrackApp/settings/modules/EyeTuneSettingsModule.py
2025-02-08 23:35:00 +13:00

77 lines
3.2 KiB
Python

from pydantic import AfterValidator
from typing_extensions import Annotated
from settings.modules.BaseModule import BaseSettingsModule, BaseValidationModel
from settings.constants import BACKGROUND_COLOR
import PySimpleGUI as sg
from settings.modules.CommonFieldValidators import try_convert_to_float
from settings.modules.CommonFieldValidators import try_convert_to_int
class EyeTuneValidationModule(BaseValidationModel):
gui_eyetune_maxin: Annotated[float, AfterValidator(try_convert_to_float)]
gui_eyetune_maxout: Annotated[float, AfterValidator(try_convert_to_float)]
gui_eyetune_maxup: Annotated[float, AfterValidator(try_convert_to_float)]
gui_eyetune_maxdown: Annotated[float, AfterValidator(try_convert_to_float)]
class EyeTuneSettingsModule(BaseSettingsModule):
def __init__(self, config, widget_id, **kwargs):
super().__init__(config=config, widget_id=widget_id, **kwargs)
self.validation_model = EyeTuneValidationModule
self.gui_eyetune_maxin = f"-gui_eyetune_maxin{widget_id}-"
self.gui_eyetune_maxout = f"-gui_eyetune_maxout{widget_id}-"
self.gui_eyetune_maxup =f"-gui_eyetune_maxup{widget_id}-"
self.gui_eyetune_maxdown =f"-gui_eyetune_maxdown{widget_id}"
def get_layout(self):
return [
[
sg.Text("Eye Tuning (Max Rotation):", background_color='#242224'),
],
[
sg.Text("Max. Inwards", background_color=BACKGROUND_COLOR),
sg.InputText(
self.config.gui_eyetune_maxin,
key=self.gui_eyetune_maxin,
size=(0, 10),
tooltip=(
"Sets the maximum allowed inwards rotation"
"\nSet between 0 and 1"
)
),
sg.Text("Max. Outwards", background_color=BACKGROUND_COLOR),
sg.InputText(
self.config.gui_eyetune_maxout,
key=self.gui_eyetune_maxout,
size=(0, 10),
tooltip=(
"Sets the maximum allowed outwards rotation"
"\nSet between 0 and 1"
)
),
],
[
sg.Text("Max. Upwards", background_color=BACKGROUND_COLOR),
sg.InputText(
self.config.gui_eyetune_maxup,
key=self.gui_eyetune_maxup,
size=(0, 10),
tooltip=(
"Sets the maximum allowed upwards rotation"
"\nSet between 0 and 1"
)
),
sg.Text("Max. Down", background_color=BACKGROUND_COLOR),
sg.InputText(
self.config.gui_eyetune_maxdown,
key=self.gui_eyetune_maxdown,
size=(0, 10),
tooltip=(
"Sets the maximum allowed downwards rotation"
"\nSet between 0 and 1"
)
),
],
]