basic runner setup changed
This commit is contained in:
@@ -25,7 +25,7 @@ src/bedit/
|
||||
│ ├── port_types.py # Port type definitions and compatibility
|
||||
│ ├── serializer.py # JSON persistence
|
||||
│ ├── libraries.py # Library file discovery and parsing
|
||||
│ └── simulation/ # Qt-free simulation service and compiler/runtime code
|
||||
│ └── simulation/ # Qt-free composition and OpenModelica interface code
|
||||
└── gui/ # All Qt-dependent code
|
||||
├── app.py # QApplication startup and palette
|
||||
├── main_window.py # Top-level UI orchestration
|
||||
@@ -105,16 +105,19 @@ Keep the root of `src/bedit` minimal. New UI modules should go into the relevant
|
||||
- File → Reload Simulation Code (`Ctrl+F5`) reloads modules under
|
||||
`bedit.core.simulation`, replaces the shared application/controller service,
|
||||
and preserves the previous instance attributes where possible.
|
||||
- Simulation compilation lives in `core/simulation/compiler.py`; the simulation
|
||||
service only owns application state and delegates compilation. Ports with
|
||||
- Modelica composition lives in `core/simulation/composer.py`; the simulation
|
||||
service only owns application state and delegates composition. Ports with
|
||||
`multipleConnections` are emitted as Modelica arrays. Their size is inferred
|
||||
per component instance from graph connections and exposed while compiling as
|
||||
`$portname_N$`; array connection endpoints receive stable one-based indices in
|
||||
graph connection order.
|
||||
- Blocking simulator integration belongs in `core/simulation/runner.py` and runs
|
||||
on its daemon worker thread. Never perform OMPython startup or simulation work
|
||||
directly on the Qt GUI thread; background failures must go to the application
|
||||
log.
|
||||
- OpenModelica integration belongs in `core/simulation/openmodelica.py`. Its
|
||||
persistent worker and OMC session start lazily on the first queued request.
|
||||
Never perform OMPython work directly on the Qt GUI thread. Result and error
|
||||
callbacks run on the worker thread and must use a Qt signal before touching UI.
|
||||
One lazy temporary working directory is shared by all requests in the session.
|
||||
Explicit application shutdown closes OMC and removes that directory plus the
|
||||
current session's OMPython log and port files; `__del__` is only a fallback.
|
||||
- The optional OpenModelica executable is persisted as
|
||||
`simulation/openModelicaPath`. The GUI passes it into `Simulation`; core must
|
||||
not read `QSettings`. An empty path uses OMPython/PATH discovery, while an
|
||||
|
||||
Reference in New Issue
Block a user