- ODS importer (libzip + pugixml): each sheet → Part, rows → Pin/Signal.
- save / restore commands: tab-delimited snapshot of modules, parts,
signals, connections + pin_map. `restore` replaces the System.
- source / script-save: replay a file of commands; record canonical
commands since last `new` for replay later. Interactive screens
refused during source. `explore` marked non-scriptable.
- TUI screen_explore: 4 columns (modules, type, children, detail) with
filters on children and detail; detail is a Menu so arrows scroll
long pin lists.
- Connector types & transforms: each Part carries a `connector_type`
string. `set-type` validates the part's pin layout against the type
(cols set check). `connect` strict pair: rejects when lookup falls
back to identity unless types are both empty AND pin sets match.
- VPX 3U transforms: 3 registered pairs (vpx-3u-bkp-pN ↔ vpx-3u-payload-pN,
N=0/1/2) with row-pattern correspondence tables ported from the user's
Python reference.
- Code split for maintainability: src/tui/{shell,completion,commands,
screen_main,screen_search,screen_connect,screen_settype,screen_explore,
tui_helpers}.cpp.
- Bug fixes: Module::add(Part*) override sets part->prnt (was always
null, breaking save's W lines). Defensive guards in explore against
empty Menu lists. Renderer wrapped in try/catch so domain throws
surface as on-screen errors instead of SIGABRT.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
43 lines
906 B
CMake
43 lines
906 B
CMake
cmake_minimum_required(VERSION 3.14)
|
|
|
|
set(CMAKE_CXX_STANDARD 17)
|
|
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
|
|
|
project(essim
|
|
LANGUAGES CXX
|
|
VERSION 0.1
|
|
DESCRIPTION "System digital twin."
|
|
)
|
|
|
|
include(FetchContent)
|
|
|
|
set(FTXUI_BUILD_DOCS OFF CACHE INTERNAL "")
|
|
set(FTXUI_BUILD_EXAMPLES OFF CACHE INTERNAL "")
|
|
set(FTXUI_BUILD_TESTS OFF CACHE INTERNAL "")
|
|
set(FTXUI_ENABLE_INSTALL OFF CACHE INTERNAL "")
|
|
|
|
FetchContent_Declare(ftxui
|
|
GIT_REPOSITORY https://github.com/ArthurSonzogni/FTXUI.git
|
|
GIT_TAG v6.1.9
|
|
GIT_SHALLOW TRUE
|
|
)
|
|
FetchContent_MakeAvailable(ftxui)
|
|
|
|
find_package(libzip REQUIRED)
|
|
find_package(pugixml REQUIRED)
|
|
|
|
file(GLOB_RECURSE ALL_SOURCES "src/*.cpp")
|
|
|
|
add_executable(essim ${ALL_SOURCES})
|
|
|
|
target_include_directories(essim PRIVATE ${CMAKE_CURRENT_SOURCE_DIR}/src)
|
|
|
|
target_link_libraries(essim
|
|
PRIVATE
|
|
ftxui::screen
|
|
ftxui::dom
|
|
ftxui::component
|
|
libzip::zip
|
|
pugixml::pugixml
|
|
)
|