mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-07-09 19:39:00 +08:00
lead indicator mindblender
This commit is contained in:
@@ -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):
|
||||
|
||||
@@ -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']
|
||||
|
||||
@@ -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__":
|
||||
|
||||
@@ -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():
|
||||
|
||||
Reference in New Issue
Block a user