proper modelica text model editing

This commit is contained in:
2026-07-21 17:16:06 +02:00
parent 2f6487e510
commit 48ac9e2f59
13 changed files with 557 additions and 58 deletions

View File

@@ -168,7 +168,13 @@ class DocumentController(QObject):
name=self._available_component_name(base_name, self.document.roots.values(), number),
implementation_kind=kind,
icon=Icon(text="Graph" if kind == "graph" else "Text"),
source={"equations": ""} if kind == "text" else {},
source={
"declarations": "",
"initialEquations": "",
"equations": "",
}
if kind == "text"
else {},
)
self.undo_stack.push(AddComponentCommand(self, None, component))
self.activate_component(component.id)
@@ -187,7 +193,13 @@ class DocumentController(QObject):
name=self._available_component_name(base_name, owner.graph.blocks.values(), number),
implementation_kind=kind,
icon=Icon(text="Graph" if kind == "graph" else "Text"),
source={"equations": ""} if kind == "text" else {},
source={
"declarations": "",
"initialEquations": "",
"equations": "",
}
if kind == "text"
else {},
)
self.undo_stack.push(AddComponentCommand(self, owner_id, component))
return component.id
@@ -427,6 +439,12 @@ class DocumentController(QObject):
raise ValueError("Open a graph component before composing")
self.simulation.compose(component.to_dict())
def compose_active_graph_source(self) -> tuple[str, str]:
component = self.active_component
if component is None or component.implementation_kind != "graph":
raise ValueError("Open a graph component before exporting a model")
return self.simulation.compose_source(component.to_dict())
def run_simulation(
self,
progress_callback=None,
@@ -636,6 +654,8 @@ class DocumentController(QObject):
self,
inputs: list[Port],
outputs: list[Port],
declarations: str,
initial_equations: str,
equations: str,
parameters: list[Parameter],
) -> None:
@@ -682,6 +702,8 @@ class DocumentController(QObject):
"outputs": [port.to_dict() for port in outputs],
"source": {
"equations": equations,
"declarations": declarations,
"initialEquations": initial_equations,
},
"parameters": [parameter.to_dict() for parameter in parameters],
}