//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::addViewer(QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry) { QSize subWindowSize; QPoint subWindowPos(-1, -1); if (windowsGeometry.isValid()) { subWindowPos = QPoint(windowsGeometry.x, windowsGeometry.y); subWindowSize = QSize(windowsGeometry.width, windowsGeometry.height); } else { RiuWellLogPlot* wellLogPlot = dynamic_cast<RiuWellLogPlot*>(viewer); if (wellLogPlot) { QSize preferredSize = wellLogPlot->preferredSize(); subWindowSize = QSize(preferredSize.width(), m_mdiArea->height()); } else { subWindowSize = QSize(400, 400); } } addViewerToMdiArea(m_mdiArea, viewer, subWindowPos, subWindowSize); refreshToolbars(); }
//-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- void RiuPlotMainWindow::addViewer(QWidget* viewer, const RimMdiWindowGeometry& windowsGeometry) { RiuMdiSubWindow* subWin = new RiuMdiSubWindow(m_mdiArea); subWin->setAttribute(Qt::WA_DeleteOnClose); // Make sure the contained widget is destroyed when the MDI window is closed subWin->setWidget(viewer); QSize subWindowSize; QPoint subWindowPos(-1, -1); bool initialStateMaximized = false; if (windowsGeometry.isValid()) { subWindowPos = QPoint(windowsGeometry.x, windowsGeometry.y); subWindowSize = QSize(windowsGeometry.width, windowsGeometry.height); initialStateMaximized = windowsGeometry.isMaximized; } else { RiuWellLogPlot* wellLogPlot = dynamic_cast<RiuWellLogPlot*>(subWin->widget()); if (wellLogPlot) { subWindowSize = QSize(275, m_mdiArea->height()); } else { subWindowSize = QSize(400, 400); if (m_mdiArea->subWindowList().size() < 1) { // Show first 3D view maximized initialStateMaximized = true; } } } if (m_mdiArea->currentSubWindow() && m_mdiArea->currentSubWindow()->isMaximized()) { initialStateMaximized = true; } subWin->show(); // Move and resize must be done after window is visible // If not, the position and size of the window is different to specification (Windows 7) // Might be a Qt bug, must be tested on Linux if (subWindowPos.x() > -1) { subWin->move(subWindowPos); } subWin->resize(subWindowSize); if (initialStateMaximized) { subWin->showMaximized(); } refreshToolbars(); }