docs: add agent skill guides and update CMake build instructions
This commit is contained in:
34
.agents/skills/signal_bridge.md
Normal file
34
.agents/skills/signal_bridge.md
Normal file
@@ -0,0 +1,34 @@
|
||||
# Skill: Multi-System Signaling (uLib ↔ Qt)
|
||||
|
||||
This skill manages the coexistence of `uLib::Object` signals and Qt's `Q_OBJECT` signaling system.
|
||||
|
||||
## Context
|
||||
- **uLib Signals**: Used for domain logic and data changes (`uLib::Object::connect`).
|
||||
- **Qt Signals**: Used for UI events, widgets, and application-level control flow (`QObject::connect`).
|
||||
|
||||
## Patterns
|
||||
|
||||
### 1. Bridging Logic
|
||||
When a domain change needs to trigger a UI update, use a wrapper or a direct connection if the widget has access to the `uLib::Object`.
|
||||
```cpp
|
||||
// In a Qt Widget
|
||||
uLib::Object::connect(domainObj, &Object::Updated, [this]() {
|
||||
this->update(); // Trigger Qt repaint
|
||||
});
|
||||
```
|
||||
|
||||
### 2. Selection Flow
|
||||
Selection usually starts in the VTK Viewport (Qt) and flows to the domain context.
|
||||
1. `QViewport` emits `prop3dSelected(Prop3D*)` (Qt signal).
|
||||
2. `MainPanel` catches it and calls `contextPanel->selectObject(p->GetContent())`.
|
||||
3. `ContextPanel` updates the tree view and property editors.
|
||||
|
||||
### 3. Connection Hygiene
|
||||
- Use `uLib::Object::connect` for everything involving `uLib::Property` changes.
|
||||
- Use Qt `connect` for button clicks, menu actions, and window events.
|
||||
- Be careful with lambda captures; ensure the captured object is still alive or use weak pointers if necessary.
|
||||
|
||||
## Checklist
|
||||
- [ ] Is the correct signaling system being used for the task?
|
||||
- [ ] Are capture groups in lambdas safe?
|
||||
- [ ] Does selection flow correctly between the 3D view and the tree view?
|
||||
Reference in New Issue
Block a user