Some checks failed
Build and Test / build (pull_request) Failing after 1m41s
- Remove separate Silo workbench toolbar (now redundant) - Remove SiloMenuManipulator (Std commands already delegate to origins) - Remove Silo_ToggleMode (origin selector handles mode switching) - Register Silo origin at startup via Create module - Update docs to reflect unified origin architecture
59 lines
2.6 KiB
Markdown
59 lines
2.6 KiB
Markdown
# Architecture
|
|
|
|
## Bootstrap flow
|
|
|
|
```
|
|
FreeCAD startup
|
|
└─ src/Mod/Create/Init.py
|
|
└─ setup_kindred_addons()
|
|
├─ exec(mods/ztools/ztools/Init.py)
|
|
└─ exec(mods/silo/freecad/Init.py)
|
|
|
|
└─ src/Mod/Create/InitGui.py
|
|
├─ setup_kindred_workbenches()
|
|
│ ├─ exec(mods/ztools/ztools/InitGui.py)
|
|
│ │ ├─ registers ZToolsWorkbench
|
|
│ │ └─ installs _ZToolsPartDesignManipulator (global)
|
|
│ └─ exec(mods/silo/freecad/InitGui.py)
|
|
│ └─ registers SiloWorkbench
|
|
└─ Deferred setup (QTimer):
|
|
├─ 1500ms: _register_silo_origin() → registers Silo FileOrigin
|
|
├─ 2000ms: _setup_silo_auth_panel() → "Database Auth" dock
|
|
├─ 3000ms: _check_silo_first_start() → settings prompt
|
|
└─ 4000ms: _setup_silo_activity_panel() → "Database Activity" dock
|
|
```
|
|
|
|
## Key source layout
|
|
|
|
```
|
|
src/Mod/Create/ Kindred bootstrap module (Python)
|
|
├── Init.py Adds mods/ addon paths, loads Init.py files
|
|
└── InitGui.py Loads workbenches, installs Silo manipulators
|
|
|
|
src/Gui/FileOrigin.h/.cpp FileOrigin base class + LocalFileOrigin
|
|
src/Gui/CommandOrigin.cpp Origin_Commit/Pull/Push/Info/BOM commands
|
|
src/Gui/OriginManager.h/.cpp Origin lifecycle management
|
|
src/Gui/OriginSelectorWidget.h/.cpp UI for origin selection
|
|
|
|
mods/ztools/ [submodule] ztools workbench
|
|
├── ztools/InitGui.py ZToolsWorkbench + PartDesign manipulator
|
|
├── ztools/ztools/
|
|
│ ├── commands/ Datum, pattern, pocket, assembly, spreadsheet
|
|
│ ├── datums/core.py Datum creation via Part::AttachExtension
|
|
│ └── resources/ Icons, theme utilities
|
|
└── CatppuccinMocha/ Theme preference pack (QSS)
|
|
|
|
mods/silo/ [submodule -> silo-mod.git] FreeCAD workbench
|
|
├── silo-client/ [submodule -> silo-client.git] shared API client
|
|
│ └── silo_client/ SiloClient, SiloSettings, CATEGORY_NAMES
|
|
└── freecad/ FreeCAD workbench (Python)
|
|
├── InitGui.py SiloWorkbench
|
|
├── silo_commands.py Commands + FreeCADSiloSettings adapter
|
|
└── silo_origin.py FileOrigin backend for Silo
|
|
|
|
src/Gui/Stylesheets/ QSS themes and SVG assets
|
|
resources/preferences/ Canonical preference pack (KindredCreate)
|
|
```
|
|
|
|
See [INTEGRATION_PLAN.md](INTEGRATION_PLAN.md) for architecture layers and phase status.
|