feat(gui): add document-origin tracking and display in window title (#16)
Some checks failed
Build and Test / build (push) Has been cancelled
Some checks failed
Build and Test / build (push) Has been cancelled
- Add originForDocument(), setDocumentOrigin(), clearDocumentOrigin() methods to OriginManager - Add signalDocumentOriginChanged signal for UI updates - Add document-to-origin tracking map in OriginManager - Update MDIView::buildWindowTitle() to append origin suffix for non-local origins (e.g., 'Part001 [Silo]') This implements Issue #16: Document origin tracking and display
This commit is contained in:
@@ -231,6 +231,63 @@ FileOrigin* OriginManager::findOwningOrigin(App::Document* doc) const
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
FileOrigin* OriginManager::originForDocument(App::Document* doc) const
|
||||
{
|
||||
if (!doc) {
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
// Check explicit association first
|
||||
auto it = _documentOrigins.find(doc);
|
||||
if (it != _documentOrigins.end()) {
|
||||
FileOrigin* origin = getOrigin(it->second);
|
||||
if (origin) {
|
||||
return origin;
|
||||
}
|
||||
// Origin was unregistered, clear stale association
|
||||
_documentOrigins.erase(it);
|
||||
}
|
||||
|
||||
// Fall back to ownership detection
|
||||
FileOrigin* owner = findOwningOrigin(doc);
|
||||
if (owner) {
|
||||
// Cache the result
|
||||
_documentOrigins[doc] = owner->id();
|
||||
return owner;
|
||||
}
|
||||
|
||||
return nullptr;
|
||||
}
|
||||
|
||||
void OriginManager::setDocumentOrigin(App::Document* doc, FileOrigin* origin)
|
||||
{
|
||||
if (!doc) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::string originId = origin ? origin->id() : "";
|
||||
|
||||
if (origin) {
|
||||
_documentOrigins[doc] = originId;
|
||||
} else {
|
||||
_documentOrigins.erase(doc);
|
||||
}
|
||||
|
||||
signalDocumentOriginChanged(doc, originId);
|
||||
}
|
||||
|
||||
void OriginManager::clearDocumentOrigin(App::Document* doc)
|
||||
{
|
||||
if (!doc) {
|
||||
return;
|
||||
}
|
||||
|
||||
auto it = _documentOrigins.find(doc);
|
||||
if (it != _documentOrigins.end()) {
|
||||
_documentOrigins.erase(it);
|
||||
}
|
||||
}
|
||||
|
||||
FileOrigin* OriginManager::originForNewDocument() const
|
||||
{
|
||||
return currentOrigin();
|
||||
|
||||
Reference in New Issue
Block a user