lead indicator mindblender

This commit is contained in:
firestarsdog
2026-07-09 00:17:18 -04:00
parent bc3c245aa5
commit 3aa2801ce7
5 changed files with 19 additions and 19 deletions
+4 -5
View File
@@ -16,10 +16,9 @@ def get_border_width(base_width: int, params: Params | None = None) -> int:
return max(1, int(round(base_width * scale / 100.0)))
def lead_indicator_enabled(params: Params | None = None) -> bool:
def lead_indicator_enabled(params: Params | None = None, *, hide_by_default: bool = False) -> bool:
active_params = params if params is not None else Params()
return (
active_params.get_bool("LeadIndicator", default=False)
and not active_params.get_bool("HideLeadMarker", default=False)
)
if active_params.get("HideLeadMarker") is None:
return not hide_by_default
return not active_params.get_bool("HideLeadMarker")
@@ -47,11 +47,10 @@ class LeadIndicatorBigButton(BigToggle):
def _handle_mouse_release(self, mouse_pos):
super()._handle_mouse_release(mouse_pos)
self.params.put_bool("LeadIndicator", self._checked)
self.params.put_bool("HideLeadMarker", not self._checked)
def refresh(self):
self.set_checked(lead_indicator_enabled(self.params))
self.set_checked(lead_indicator_enabled(self.params, hide_by_default=True))
class VisualsLayoutMici(NavScroller):
+1 -1
View File
@@ -129,7 +129,7 @@ class ModelRenderer(Widget):
model = sm['modelV2']
radar_state = sm['radarState'] if sm.valid['radarState'] else None
lead_one = radar_state.leadOne if radar_state else None
render_lead_indicator = self._longitudinal_control and radar_state is not None and lead_indicator_enabled(self._params)
render_lead_indicator = self._longitudinal_control and radar_state is not None and lead_indicator_enabled(self._params, hide_by_default=True)
# Update model data when needed
model_updated = sm.updated['modelV2']
+12 -6
View File
@@ -15,6 +15,12 @@ class FakeParams:
def __init__(self, values=None):
self.values = values or {}
def get(self, key, block=False, return_default=False, encoding=None, default=None):
if key not in self.values:
return None
v = self.values[key]
return v if isinstance(v, bytes) else str(v).encode()
def get_bool(self, key, block=False, default=False):
value = self.values.get(key, default)
if isinstance(value, bool):
@@ -23,14 +29,14 @@ class FakeParams:
class TestStarPilotVisuals(unittest.TestCase):
def test_lead_indicator_disabled_by_default(self):
self.assertFalse(lead_indicator_enabled(FakeParams()))
def test_lead_indicator_enabled_by_default(self):
self.assertTrue(lead_indicator_enabled(FakeParams()))
def test_lead_indicator_can_be_enabled(self):
self.assertTrue(lead_indicator_enabled(FakeParams({"LeadIndicator": True})))
def test_hide_lead_marker_disables(self):
self.assertFalse(lead_indicator_enabled(FakeParams({"HideLeadMarker": True})))
def test_hide_lead_marker_suppresses_lead_indicator(self):
self.assertFalse(lead_indicator_enabled(FakeParams({"LeadIndicator": True, "HideLeadMarker": True})))
def test_hide_by_default_returns_false_when_unset(self):
self.assertFalse(lead_indicator_enabled(FakeParams(), hide_by_default=True))
if __name__ == "__main__":
+1 -5
View File
@@ -2557,15 +2557,11 @@ def _get_lead_indicator_enabled(defaults_lookup=None):
if defaults_lookup is None:
defaults_lookup = _get_default_param_values()
lead_raw = _safe_params_get_live_raw("LeadIndicator")
if _is_blank_param_raw(lead_raw):
lead_raw = defaults_lookup.get("LeadIndicator", "0")
hide_raw = _safe_params_get_live_raw("HideLeadMarker")
if _is_blank_param_raw(hide_raw):
hide_raw = defaults_lookup.get("HideLeadMarker", "0")
return _coerce_param_value(lead_raw, bool) and not _coerce_param_value(hide_raw, bool)
return not _coerce_param_value(hide_raw, bool)
def _get_custom_accel_profile_initialized():