QList<QWidget*> TabbedStackPresentation::GetTabList( IPresentablePart::Pointer part) { QList<QWidget*> list; if (folder->GetTabFolder()->GetTabPosition() == Constants::BOTTOM) { if (part->GetControl() != nullptr) { list.push_back(part->GetControl()); } } list.push_back(folder->GetTabFolder()->GetControl()); // if (part->GetToolBar() != 0) // { // list.push_back(part->GetToolBar()); // } if (folder->GetTabFolder()->GetTabPosition() == Constants::TOP) { if (part->GetControl() != nullptr) { list.push_back(part->GetControl()); } } return list; }
void TabbedStackPresentation::SetVisible(bool isVisible) { IPresentablePart::Pointer current = this->GetSite()->GetSelectedPart(); if (current != 0) { current->SetVisible(isVisible); } folder->SetVisible(isVisible); }
void StackPresentation::MovePart(IPresentablePart::Pointer toMove, Object::Pointer cookie) { this->RemovePart(toMove); this->AddPart(toMove, cookie); if (this->GetSite()->GetSelectedPart() == toMove) { this->SelectPart(toMove); toMove->SetFocus(); } }
void TabbedStackPresentation::AddPart(IPresentablePart::Pointer newPart, Object::Pointer cookie) { ++ignoreSelectionChanges; try { if (initializing) { tabs->AddInitial(newPart); } else { if (cookie == 0) { tabs->Add(newPart); } else { int insertionPoint = dragBehavior->GetInsertionPosition(cookie); tabs->Insert(newPart, insertionPoint); } } --ignoreSelectionChanges; } catch (std::exception& e) { --ignoreSelectionChanges; throw e; } if (tabs->GetPartList().size() == 1) { if (newPart->GetSizeFlags(true) != 0 || newPart->GetSizeFlags(false) != 0) { this->GetSite()->FlushLayout(); } } }
void PartInfo::Set(IPresentablePart::Pointer part) { name = part->GetName().c_str(); title = part->GetTitle().c_str(); contentDescription = part->GetTitleStatus().c_str(); image = static_cast<QIcon*> (part->GetTitleImage()); toolTip = part->GetTitleToolTip().c_str(); dirty = part->IsDirty(); }
void TabbedStackPresentation::HandleTabFolderEvent(TabFolderEvent::Pointer e) { int type = e->type; if (type == TabFolderEvent::EVENT_MINIMIZE) { this->GetSite()->SetState(IStackPresentationSite::STATE_MINIMIZED); } else if (type == TabFolderEvent::EVENT_MAXIMIZE) { this->GetSite()->SetState(IStackPresentationSite::STATE_MAXIMIZED); } else if (type == TabFolderEvent::EVENT_RESTORE) { this->GetSite()->SetState(IStackPresentationSite::STATE_RESTORED); } else if (type == TabFolderEvent::EVENT_CLOSE) { IPresentablePart::Pointer part = folder->GetPartForTab(e->tab); if (part != 0) { QList<IPresentablePart::Pointer> parts; parts.push_back(part); this->GetSite()->Close(parts); } } else if (type == TabFolderEvent::EVENT_SHOW_LIST) { this->ShowPartList(); } else if (type == TabFolderEvent::EVENT_GIVE_FOCUS_TO_PART) { IPresentablePart::Pointer part = this->GetSite()->GetSelectedPart(); if (part != 0) { part->SetFocus(); } } else if (type == TabFolderEvent::EVENT_PANE_MENU) { IPresentablePart::Pointer part = this->GetSite()->GetSelectedPart(); if (part != 0) { part->SetFocus(); } //this->ShowPaneMenu(folder->GetPartForTab(e->tab), QPoint(e->x, e->y)); } else if (type == TabFolderEvent::EVENT_DRAG_START) { AbstractTabItem* beingDragged = e->tab; QPoint initialLocation(e->x, e->y); if (beingDragged == nullptr) { this->GetSite()->DragStart(initialLocation, false); } else { IPresentablePart::Pointer part = folder->GetPartForTab(beingDragged); try { dragStart = folder->IndexOf(part); // hold on to this TabbedStackPresentation instance, because // in this->GetSite()->DragStart() all reference may be deleted // and this instance is destroyed, leading to a seg fault when // trying to write to dragStart StackPresentation::Pointer tabbedStackPresentation(this); this->GetSite()->DragStart(part, initialLocation, false); dragStart = -1; } catch(const std::exception& exc) { dragStart = -1; throw exc; } } } else if (type == TabFolderEvent::EVENT_TAB_SELECTED) { if (ignoreSelectionChanges > 0) { return; } IPresentablePart::Pointer part = folder->GetPartForTab(e->tab); if (part != 0) { this->GetSite()->SelectPart(part); } } else if (type == TabFolderEvent::EVENT_SYSTEM_MENU) { IPresentablePart::Pointer part = folder->GetPartForTab(e->tab); if (part == 0) { part = this->GetSite()->GetSelectedPart(); } if (part != 0) { //this->ShowSystemMenu(QPoint(e->x, e->y), part); } } else if (type == TabFolderEvent::EVENT_PREFERRED_SIZE) { IPresentablePart::Pointer part = folder->GetPartForTab(e->tab); if (part == 0) { // Standalone views with no title have no tab, so just get the part. QList<IPresentablePart::Pointer> parts = this->GetSite()->GetPartList(); if (parts.size() > 0) part = parts.front(); } if (part == this->GetSite()->GetSelectedPart()) { this->GetSite()->FlushLayout(); } } }