mirror of
https://github.com/firestar5683/StarPilot.git
synced 2026-08-21 00:03:45 +08:00
fla
This commit is contained in:
@@ -62,7 +62,8 @@ INJECTED_SECTION_PARAMS = {
|
||||
# Keys explicitly hidden from The Galaxy's generic settings UI.
|
||||
HIDDEN_KEYS = {
|
||||
"HumanAcceleration",
|
||||
"DisableWideRoad",
|
||||
"HideLeadMarker",
|
||||
"HideSpeedLimit",
|
||||
"LockDoorsTimer",
|
||||
"NewLongAPI",
|
||||
"ToyotaDoors",
|
||||
@@ -74,6 +75,18 @@ HIDDEN_SECTION_NAMES = {"Model & Customization"}
|
||||
# Keys that are boolean toggles despite ambiguous defaults in starpilot_variables.py.
|
||||
FORCE_BOOL_KEYS = {"EVTuning"}
|
||||
|
||||
# These fields are intentionally allowed to differ from the Qt source. Galaxy
|
||||
# has its own copy, nesting, and browser-only behavior for otherwise shared
|
||||
# params, so regeneration must not discard those overrides.
|
||||
GALAXY_OVERRIDE_FIELDS = {
|
||||
"label",
|
||||
"description",
|
||||
"parent_key",
|
||||
"is_parent_toggle",
|
||||
"disabled_when_key_true",
|
||||
"disabled_reason",
|
||||
}
|
||||
|
||||
|
||||
def get_param_settings_tiers():
|
||||
params_path = os.path.join(REPO_ROOT, "common/params_keys.h")
|
||||
@@ -105,6 +118,9 @@ def apply_settings_tiers(layout):
|
||||
resolving.add(key)
|
||||
|
||||
parent_key = params_by_key.get(key, {}).get("parent_key")
|
||||
if parent_key == "GalaxyDeveloperMode":
|
||||
resolved[key] = "advanced"
|
||||
return resolved[key]
|
||||
own_tier = PARAM_SETTINGS_TIERS.get(key)
|
||||
if parent_key:
|
||||
parent_tier = resolve_tier(parent_key, resolving)
|
||||
@@ -601,8 +617,14 @@ def parse_cpp_file(filename):
|
||||
|
||||
|
||||
def merge_layouts(existing_layout, generated_layout):
|
||||
existing_sections = {section["name"]: section for section in existing_layout}
|
||||
generated_sections = {section["name"]: section for section in generated_layout}
|
||||
existing_keys = {
|
||||
param["key"]
|
||||
for section in existing_layout
|
||||
for param in section.get("params", [])
|
||||
if "key" in param
|
||||
}
|
||||
merged_keys = set(existing_keys)
|
||||
|
||||
merged_layout = []
|
||||
|
||||
@@ -625,16 +647,21 @@ def merge_layouts(existing_layout, generated_layout):
|
||||
for param in existing_params:
|
||||
key = param["key"]
|
||||
if key in generated_by_key:
|
||||
merged_params.append(generated_by_key[key])
|
||||
merged_param = dict(param)
|
||||
for field, value in generated_by_key[key].items():
|
||||
if field not in GALAXY_OVERRIDE_FIELDS and field != "settings_tier":
|
||||
merged_param[field] = value
|
||||
merged_params.append(merged_param)
|
||||
else:
|
||||
merged_params.append(param)
|
||||
seen_keys.add(key)
|
||||
|
||||
for param in generated_params:
|
||||
key = param["key"]
|
||||
if key not in seen_keys:
|
||||
if key not in seen_keys and key not in merged_keys:
|
||||
merged_params.append(param)
|
||||
seen_keys.add(key)
|
||||
merged_keys.add(key)
|
||||
|
||||
merged_section = dict(section)
|
||||
merged_section["icon"] = generated.get("icon", section.get("icon"))
|
||||
@@ -648,7 +675,8 @@ def merge_layouts(existing_layout, generated_layout):
|
||||
|
||||
return merged_layout
|
||||
|
||||
def main():
|
||||
|
||||
def generate_layout(existing_layout=None):
|
||||
generated_layout = []
|
||||
for cat in CATEGORIES:
|
||||
items = parse_cpp_file(cat["file"])
|
||||
@@ -662,15 +690,22 @@ def main():
|
||||
"icon": cat["icon"],
|
||||
"params": items
|
||||
})
|
||||
|
||||
layout = generated_layout if existing_layout is None else merge_layouts(existing_layout, generated_layout)
|
||||
return apply_settings_tiers(layout)
|
||||
|
||||
def main():
|
||||
output_path = os.path.join(REPO_ROOT, "starpilot/system/the_galaxy/assets/components/tools/device_settings_layout.json")
|
||||
layout = generated_layout
|
||||
existing_layout = None
|
||||
if os.path.exists(output_path):
|
||||
with open(output_path, 'r', encoding='utf-8') as f:
|
||||
existing_layout = json.load(f)
|
||||
layout = merge_layouts(existing_layout, generated_layout)
|
||||
layout = apply_settings_tiers(layout)
|
||||
layout = generate_layout(existing_layout)
|
||||
if layout == existing_layout:
|
||||
return
|
||||
with open(output_path, 'w', encoding='utf-8') as f:
|
||||
json.dump(layout, f, indent=2, ensure_ascii=False)
|
||||
f.write("\n")
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
|
||||
Reference in New Issue
Block a user