- `essim --commands-md [file]` instantiates the Tui, calls
`Tui::DumpCommandsMd(ostream&)` which iterates the live registry and
emits Markdown grouped by interactive/other, then exits. Single
source of truth: a new `CommandSpec` field surfaces automatically.
- CMake `doc` target now `DEPENDS essim` and chains:
doxygen → gen_api_md.py → doc/api/
essim --commands-md → doc/user/commands.md
- `doc/user/` adds:
- index.md (hand-written) — first session, interactive-screen
conventions, save/restore/replay overview.
- scripting.md (hand-written) — `set`/`$var` expansion semantics,
`source` event-paced execution, script-save denylist, worked
example pointing at test/system.essim.
- commands.md (auto-generated, regenerated by the `doc` target).
- Top-level README refocused on quick start; pointers to the new
doc tree (user/, api/, DESIGN.md) instead of an inline command table.
- doc/README.md and DESIGN.md document the two-pipeline doc workflow.
- `test/system.essim` and user docs anonymised: bkp → backplane,
vdn1/2/3 → payload1/2/3, cb3p → payload4, bpb/cob/ssu →
peripheral1/2/3; netlist file names + variable names + paths all
replaced with generic equivalents.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
8.8 KiB
8.8 KiB
Tui
class Tui
Defined in tui.hpp:18
Private type
enum Completion
Private Attributes
std::vector< std::string > history
std::vector< std::string > recorded
std::vector< std::string > output
std::string input
int cursor_pos
int history_idx
int scroll_offset
Lines scrolled up from the tail; 0 = follow newest output.
bool quit
bool in_source
std::unique_ptr< System > sys
std::deque< Prompt > pending
std::map< std::string, CommandSpec > commands
std::map< std::string, std::string > vars
$var-style substitution table.
int screen_idx
std::vector< std::string > search_modules
std::vector< std::string > search_types
int search_module_idx
int search_type_idx
int search_focus_idx
std::string search_query
std::vector< std::string > connect_modules
int connect_m1_idx
int connect_m2_idx
std::string connect_p1_filter
std::string connect_p2_filter
std::vector< std::string > connect_p1_list
std::vector< std::string > connect_p2_list
int connect_p1_idx
int connect_p2_idx
int connect_focus_idx
std::vector< std::string > explore_modules
int explore_module_idx
std::vector< std::string > explore_types
int explore_type_idx
std::vector< std::string > explore_children
int explore_child_idx
std::string explore_child_filter
std::string explore_detail_filter
std::vector< std::string > explore_detail
int explore_detail_idx
std::string explore_header
int explore_focus_idx
std::atomic< bool > loading
true while a script is being processed; read by tick thread.
std::atomic< bool > tick_in_flight
main thread acks each tick by clearing this; ticker waits.
std::string loading_filename
std::vector< std::string > loading_lines
size_t loading_idx
int loading_executed
int loading_lineno
bool loading_prev_in_source
ftxui::ScreenInteractive * screen_ptr
set in Run() so Source() can post events. so Source() can post events.
std::vector< std::string > net_modules
int net_module_idx
std::string net_sig_filter
std::vector< std::string > net_sigs
rebuilt every frame from filter
int net_sig_idx
int net_focus_idx
std::vector< std::string > settype_modules
int settype_m_idx
std::string settype_p_filter
std::vector< std::string > settype_p_list
int settype_p_idx
std::string settype_type
std::string settype_status
int settype_focus_idx
Public Functions
Tui()
~Tui()
void Run()
void DumpCommandsMd(std::ostream &out) const
Private Functions
void RegisterCommands()
void Print(const std::string &line)
void Submit()
void Dispatch(const std::string &raw)
void Finalize(const std::string &name, const CommandSpec &spec, const std::vector< std::string > &args)
void HistoryUp()
void HistoryDown()
void CancelPending()
void LoadHistory()
void AppendHistory(const std::string &cmd)
void Source(const std::string &filename)
void ProcessNextSourceLine()
std::string ExpandVars(const std::string &s) const
void CompleteCommand(size_t start=0)
void CompletePath(size_t start=0)
void CompleteInline()
void RefreshFilteredPartList(const std::vector< std::string > &modules, int m_idx, const std::string &filter, std::vector< std::string > &out, int &sel_idx)
ftxui::Component BuildMainScreen(ftxui::ScreenInteractive &screen)
ftxui::Component BuildSearchScreen()
ftxui::Component BuildConnectScreen()
ftxui::Component BuildSettypeScreen()
ftxui::Component BuildExploreScreen()
ftxui::Component BuildNetScreen()
← Back to classes · Top