[TD]improve handling of View in multiple Pages

This commit is contained in:
Wanderer Fan
2022-01-10 10:08:53 -05:00
committed by WandererFan
parent 4cc744c920
commit 3a7a12e436
5 changed files with 106 additions and 7 deletions

View File

@@ -246,6 +246,7 @@ void DrawView::onDocumentRestored()
* in case it is also a child of another duplicate page
* @return
*/
//note this won't find parent pages for DrawProjItem since their parent is DrawProjGroup!
int DrawView::countParentPages() const
{
int count = 0;
@@ -260,6 +261,9 @@ int DrawView::countParentPages() const
return count;
}
//finds the first DrawPage in this Document that claims to own this DrawView
//note that it is possible to manipulate the Views property of DrawPage so that
//more than 1 DrawPage claims a DrawView.
DrawPage* DrawView::findParentPage() const
{
// Get Feature Page
@@ -283,6 +287,33 @@ DrawPage* DrawView::findParentPage() const
return page;
}
std::vector<DrawPage*> DrawView::findAllParentPages() const
{
// Get Feature Page
std::vector<DrawPage*> result;
DrawPage *page = 0;
DrawViewCollection *collection = 0;
std::vector<App::DocumentObject*> parent = getInList();
for (std::vector<App::DocumentObject*>::iterator it = parent.begin(); it != parent.end(); ++it) {
if ((*it)->getTypeId().isDerivedFrom(DrawPage::getClassTypeId())) {
page = static_cast<TechDraw::DrawPage *>(*it);
}
if ((*it)->getTypeId().isDerivedFrom(DrawViewCollection::getClassTypeId())) {
collection = static_cast<TechDraw::DrawViewCollection *>(*it);
page = collection->findParentPage();
}
if(page) {
result.emplace_back(page);
}
}
return result;
}
bool DrawView::isInClip()
{
std::vector<App::DocumentObject*> parent = getInList();