Use manifest defaults when adding components and refresh properties from device

- Populate prop elements with manifest default values when adding
  components in both offline and live mode
- Send config values from manifest in SOX add command for live devices
- Refresh button in properties panel now fetches fresh values from
  the connected device before re-reading the DOM
- Properties panel fetches device values on open in live mode

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-09-20 00:14:52 +03:00
co-authored by Claude Opus 4.6
parent 2530bbd92c
commit abdafef7cb
6 changed files with 122 additions and 17 deletions
+20 -5
View File
@@ -11,6 +11,7 @@ import app_state
import connect_dialog
import device_session
import link_view
import live_hooks
import manage_kits
import palette
import properties
@@ -191,7 +192,15 @@ def refresh_all_views():
def _component_in_document(comp):
root = app_state.xml_root_element
return root is not None and any(element is comp for element in root.iter())
if root is None:
return False
if any(element is comp for element in root.iter()):
return True
if app_state.live_mode:
comp_id = comp.get("id")
if comp_id is not None:
return any(e.get("id") == comp_id for e in root.iter())
return False
def delete_component(comp):
@@ -1329,10 +1338,16 @@ def on_canvas_release(event):
if orig_x != raw_x or orig_y != raw_y:
meta_before = app_state.drag_data.get("meta_before", meta_str)
update_meta_property(comp_element, meta_str, raw_x, raw_y)
undo.push(undo.MetaMoveCommand(
[(comp_element, meta_before, raw_x, raw_y)],
label=f"move {comp_element.get('name', 'component')}"
))
if live_hooks.is_live():
new_meta = comp_element.find("prop[@name='meta']")
if new_meta is not None:
live_hooks.live_set_prop_value(
comp_element, "meta", new_meta.get("val", "0"))
if not app_state.live_mode:
undo.push(undo.MetaMoveCommand(
[(comp_element, meta_before, raw_x, raw_y)],
label=f"move {comp_element.get('name', 'component')}"
))
app_state.mark_dirty()
app_state.drag_data["tag"] = None