//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::removeViewer(QWidget* viewer) { m_blockSlotSubWindowActivated = true; m_mdiArea->removeSubWindow(findMdiSubWindow(viewer)); m_blockSlotSubWindowActivated = false; refreshToolbars(); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::selectedObjectsChanged() { std::vector<caf::PdmUiItem*> uiItems; m_projectTreeView->selectedUiItems(uiItems); caf::PdmObjectHandle* firstSelectedObject = nullptr; if (uiItems.size() == 1) { firstSelectedObject = dynamic_cast<caf::PdmObjectHandle*>(uiItems[0]); } m_pdmUiPropertyView->showProperties(firstSelectedObject); if (uiItems.size() == 1 && m_allowActiveViewChangeFromSelection) { // Find the reservoir view or the Plot that the selected item is within if (!firstSelectedObject) { caf::PdmFieldHandle* selectedField = dynamic_cast<caf::PdmFieldHandle*>(uiItems[0]); if (selectedField) firstSelectedObject = selectedField->ownerObject(); } if (!firstSelectedObject) return; RimViewWindow* selectedWindow = dynamic_cast<RimViewWindow*>(firstSelectedObject); if (!selectedWindow) { firstSelectedObject->firstAncestorOrThisOfType(selectedWindow); } // If we cant find the view window as an MDI sub window, we search higher in the // project tree to find a possible parent view window that has. if (selectedWindow && !findMdiSubWindow(selectedWindow->viewWidget())) { if (selectedWindow->parentField() && selectedWindow->parentField()->ownerObject()) { selectedWindow->parentField()->ownerObject()->firstAncestorOrThisOfType(selectedWindow); } } if (selectedWindow) { if (selectedWindow->viewWidget()) { setActiveViewer(selectedWindow->viewWidget()); } // The only way to get to this code is by selection change initiated from the project tree view // As we are activating an MDI-window, the focus is given to this MDI-window // Set focus back to the tree view to be able to continue keyboard tree view navigation m_projectTreeView->treeView()->setFocus(); } } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::setActiveViewer(QWidget* viewer) { m_blockSlotSubWindowActivated = true; QMdiSubWindow* swin = findMdiSubWindow(viewer); if (swin) m_mdiArea->setActiveSubWindow(swin); m_blockSlotSubWindowActivated = false; }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- RimMdiWindowGeometry RiuPlotMainWindow::windowGeometryForViewer(QWidget* viewer) { QMdiSubWindow* mdiWindow = findMdiSubWindow(viewer); if (mdiWindow) { return RiuMdiSubWindow::windowGeometryForWidget(mdiWindow); } RimMdiWindowGeometry geo; return geo; }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::initializeGuiNewProjectLoaded() { setPdmRoot(RiaApplication::instance()->project()); restoreTreeViewState(); if (m_pdmUiPropertyView && m_pdmUiPropertyView->currentObject()) { m_pdmUiPropertyView->currentObject()->uiCapability()->updateConnectedEditors(); } { auto* obj = RiaSummaryTools::summaryCaseMainCollection(); if (obj) { setExpanded(obj); } } { auto* obj = RiaSummaryTools::summaryPlotCollection(); if (obj) { setExpanded(obj); } } if (subWindowsAreTiled()) { tileSubWindows(); } if (m_activePlotViewWindow && m_activePlotViewWindow->viewWidget()) { if (m_activePlotViewWindow->mdiWindowGeometry().isMaximized) { auto subWin = findMdiSubWindow(m_activePlotViewWindow->viewWidget()); if (subWin) { subWin->showMaximized(); } } } refreshToolbars(); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::setWidthOfMdiWindow(QWidget* mdiWindowWidget, int newWidth) { QMdiSubWindow* mdiWindow = findMdiSubWindow(mdiWindowWidget); if (mdiWindow) { QSize subWindowSize = mdiWindow->size(); subWindowSize.setWidth(std::max(newWidth, 100)); mdiWindow->resize(subWindowSize); if (mdiWindow->isMaximized()) { // Set window temporarily to normal state and back to maximized // to redo layout so the whole window canvas is filled // Tried to activate layout, did not work as expected // Tested code: // m_layout->activate(); // mdiWindow->layout()->activate(); mdiWindow->showNormal(); mdiWindow->showMaximized(); } } }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::setActiveViewer(QWidget* viewer) { QMdiSubWindow* swin = findMdiSubWindow(viewer); if (swin) m_mdiArea->setActiveSubWindow(swin); }