diff --git a/ApplicationCode/Resources/ResInsight.qrc b/ApplicationCode/Resources/ResInsight.qrc index a51739f3de..eb5bfbe0e7 100644 --- a/ApplicationCode/Resources/ResInsight.qrc +++ b/ApplicationCode/Resources/ResInsight.qrc @@ -36,6 +36,7 @@ draw_style_surface_24x24.png SnapShot.png SnapShotSave.png + SnapShotSaveViews.png fs_CellFace.glsl diff --git a/ApplicationCode/Resources/SnapShotSaveViews.png b/ApplicationCode/Resources/SnapShotSaveViews.png new file mode 100644 index 0000000000..ee526bc6ee Binary files /dev/null and b/ApplicationCode/Resources/SnapShotSaveViews.png differ diff --git a/ApplicationCode/UserInterface/RiuMainWindow.cpp b/ApplicationCode/UserInterface/RiuMainWindow.cpp index 07d8e3e145..f649b4c8be 100644 --- a/ApplicationCode/UserInterface/RiuMainWindow.cpp +++ b/ApplicationCode/UserInterface/RiuMainWindow.cpp @@ -176,7 +176,7 @@ void RiuMainWindow::closeEvent(QCloseEvent* event) void RiuMainWindow::createActions() { // File actions - m_openAction = new QAction(QIcon(":/AppLogo48x48.png"), "&Open Eclipse Case", this); + m_openEclipseCaseAction = new QAction(QIcon(":/AppLogo48x48.png"), "&Open Eclipse Case", this); m_openInputEclipseFileAction= new QAction(QIcon(":/EclipseInput48x48.png"), "&Open Input Eclipse Case", this); m_openMultipleEclipseCasesAction = new QAction(QIcon(":/CreateGridCaseGroup16x16.png"), "&Create Grid Case Group from Files", this); @@ -188,17 +188,17 @@ void RiuMainWindow::createActions() m_mockLargeResultsModelAction = new QAction("Large Mock Model", this); m_mockInputModelAction = new QAction("Input Mock Model", this); - m_snapshotToFile = new QAction("Snapshot To File", this); - m_snapshotToClipboard = new QAction("Snapshot To Clipboard", this); - m_snapshotAllViewsToFile = new QAction("Snapshot All Views To File", this); + m_snapshotToFile = new QAction(QIcon(":/SnapShotSave.png"), "Snapshot To File", this); + m_snapshotToClipboard = new QAction(QIcon(":/SnapShot.png"), "Copy Snapshot To Clipboard", this); + m_snapshotAllViewsToFile = new QAction(QIcon(":/SnapShotSaveViews.png"), "Snapshot All Views To File", this); m_saveProjectAction = new QAction(QIcon(":/Save.png"), "&Save Project", this); m_saveProjectAsAction = new QAction(QIcon(":/Save.png"), "Save Project &As", this); - m_closeAction = new QAction("&Close", this); + m_closeProjectAction = new QAction("&Close Project", this); m_exitAction = new QAction("E&xit", this); - connect(m_openAction, SIGNAL(triggered()), SLOT(slotOpenBinaryGridFiles())); + connect(m_openEclipseCaseAction, SIGNAL(triggered()), SLOT(slotOpenBinaryGridFiles())); connect(m_openInputEclipseFileAction,SIGNAL(triggered()), SLOT(slotOpenInputFiles())); connect(m_openMultipleEclipseCasesAction,SIGNAL(triggered()), SLOT(slotOpenMultipleCases())); connect(m_openProjectAction, SIGNAL(triggered()), SLOT(slotOpenProject())); @@ -216,7 +216,7 @@ void RiuMainWindow::createActions() connect(m_saveProjectAction, SIGNAL(triggered()), SLOT(slotSaveProject())); connect(m_saveProjectAsAction, SIGNAL(triggered()), SLOT(slotSaveProjectAs())); - connect(m_closeAction, SIGNAL(triggered()), SLOT(slotCloseProject())); + connect(m_closeProjectAction, SIGNAL(triggered()), SLOT(slotCloseProject())); connect(m_exitAction, SIGNAL(triggered()), QApplication::instance(), SLOT(closeAllWindows())); @@ -250,7 +250,7 @@ void RiuMainWindow::createActions() connect(m_zoomAll, SIGNAL(triggered()), SLOT(slotZoomAll())); // Debug actions - m_newPropertyView = new QAction("New Property View", this); + m_newPropertyView = new QAction("New Project and Property View", this); connect(m_newPropertyView, SIGNAL(triggered()), SLOT(slotNewObjectPropertyView())); // Help actions @@ -266,18 +266,26 @@ void RiuMainWindow::createMenus() { // File menu QMenu* fileMenu = menuBar()->addMenu("&File"); - fileMenu->addAction(m_openAction); - fileMenu->addAction(m_openInputEclipseFileAction); - fileMenu->addAction(m_openMultipleEclipseCasesAction); + fileMenu->addAction(m_openProjectAction); fileMenu->addAction(m_openLastUsedProjectAction); + fileMenu->addSeparator(); + + QMenu* importMenu = fileMenu->addMenu("&Import"); + importMenu->addAction(m_openEclipseCaseAction); + importMenu->addAction(m_openInputEclipseFileAction); + importMenu->addAction(m_openMultipleEclipseCasesAction); + + QMenu* exportMenu = fileMenu->addMenu("&Export"); + exportMenu->addAction(m_snapshotToFile); + exportMenu->addAction(m_snapshotAllViewsToFile); fileMenu->addSeparator(); fileMenu->addAction(m_saveProjectAction); fileMenu->addAction(m_saveProjectAsAction); fileMenu->addSeparator(); - fileMenu->addAction(m_closeAction); + fileMenu->addAction(m_closeProjectAction); fileMenu->addSeparator(); fileMenu->addAction(m_exitAction); @@ -285,7 +293,10 @@ void RiuMainWindow::createMenus() // Edit menu QMenu* editMenu = menuBar()->addMenu("&Edit"); + editMenu->addAction(m_snapshotToClipboard); + editMenu->addSeparator(); editMenu->addAction(m_editPreferences); + connect(editMenu, SIGNAL(aboutToShow()), SLOT(slotRefreshEditActions())); @@ -299,8 +310,6 @@ void RiuMainWindow::createMenus() viewMenu->addAction(m_viewFromEast); viewMenu->addAction(m_viewFromBelow); viewMenu->addAction(m_viewFromAbove); - viewMenu->addSeparator(); - viewMenu->addAction(m_newPropertyView); connect(viewMenu, SIGNAL(aboutToShow()), SLOT(slotRefreshViewActions())); @@ -311,11 +320,6 @@ void RiuMainWindow::createMenus() debugMenu->addAction(m_mockLargeResultsModelAction); debugMenu->addAction(m_mockInputModelAction); - debugMenu->addSeparator(); - debugMenu->addAction(m_snapshotToClipboard); - debugMenu->addAction(m_snapshotToFile); - debugMenu->addAction(m_snapshotAllViewsToFile); - connect(debugMenu, SIGNAL(aboutToShow()), SLOT(slotRefreshDebugActions())); m_windowMenu = menuBar()->addMenu("&Windows"); @@ -336,18 +340,20 @@ void RiuMainWindow::createToolBars() m_standardToolBar = addToolBar(tr("Standard")); m_standardToolBar->setObjectName(m_standardToolBar->windowTitle()); - m_standardToolBar->addAction(m_openAction); + m_standardToolBar->addAction(m_openEclipseCaseAction); m_standardToolBar->addAction(m_openInputEclipseFileAction); m_standardToolBar->addAction(m_openProjectAction); //m_standardToolBar->addAction(m_openLastUsedProjectAction); m_standardToolBar->addAction(m_saveProjectAction); - // Create animation toolbar - m_animationToolBar = new caf::AnimationToolBar("Animation", this); - addToolBar(m_animationToolBar); - //connect(m_animationToolBar, SIGNAL(signalFrameRateChanged(double)), SLOT(slotFramerateChanged(double))); + // Snapshots + m_snapshotToolbar = addToolBar(tr("View Snapshots")); + m_snapshotToolbar->setObjectName(m_snapshotToolbar->windowTitle()); + m_snapshotToolbar->addAction(m_snapshotToClipboard); + m_snapshotToolbar->addAction(m_snapshotToFile); + m_snapshotToolbar->addAction(m_snapshotAllViewsToFile); - // View toolbar + // View toolbar m_viewToolBar = addToolBar(tr("View")); m_viewToolBar->setObjectName(m_viewToolBar->windowTitle()); m_viewToolBar->addAction(m_zoomAll); @@ -358,6 +364,11 @@ void RiuMainWindow::createToolBars() m_viewToolBar->addAction(m_viewFromAbove); m_viewToolBar->addAction(m_viewFromBelow); + // Create animation toolbar + m_animationToolBar = new caf::AnimationToolBar("Animation", this); + addToolBar(m_animationToolBar); + //connect(m_animationToolBar, SIGNAL(signalFrameRateChanged(double)), SLOT(slotFramerateChanged(double))); + refreshAnimationActions(); } @@ -369,7 +380,7 @@ void RiuMainWindow::createToolBars() void RiuMainWindow::createDockPanels() { { - QDockWidget* dockWidget = new QDockWidget("Project", this); + QDockWidget* dockWidget = new QDockWidget("Project Tree", this); dockWidget->setObjectName("dockWidget"); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); @@ -388,6 +399,19 @@ void RiuMainWindow::createDockPanels() addDockWidget(Qt::LeftDockWidgetArea, dockWidget); } + { + QDockWidget* dockWidget = new QDockWidget("Property Editor", this); + dockWidget->setObjectName("dockWidget"); + dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); + + m_pdmUiPropertyView = new caf::PdmUiPropertyView(dockWidget); + dockWidget->setWidget(m_pdmUiPropertyView); + + connect(m_treeView, SIGNAL(selectedObjectChanged( caf::PdmObject* )), m_pdmUiPropertyView, SLOT(showProperties( caf::PdmObject* ))); + + addDockWidget(Qt::LeftDockWidgetArea, dockWidget); + } + { QDockWidget* dockPanel = new QDockWidget("Result Info", this); dockPanel->setObjectName("dockResultInfoPanel"); @@ -408,19 +432,7 @@ void RiuMainWindow::createDockPanels() addDockWidget(Qt::BottomDockWidgetArea, dockPanel); } - { - QDockWidget* dockWidget = new QDockWidget("Properties", this); - dockWidget->setObjectName("dockWidget"); - dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); - - m_pdmUiPropertyView = new caf::PdmUiPropertyView(dockWidget); - dockWidget->setWidget(m_pdmUiPropertyView); - - connect(m_treeView, SIGNAL(selectedObjectChanged( caf::PdmObject* )), m_pdmUiPropertyView, SLOT(showProperties( caf::PdmObject* ))); - - addDockWidget(Qt::LeftDockWidgetArea, dockWidget); - } - + setCorner(Qt::BottomLeftCorner, Qt::LeftDockWidgetArea); setCorner(Qt::BottomRightCorner, Qt::BottomDockWidgetArea); } @@ -491,7 +503,7 @@ void RiuMainWindow::slotRefreshFileActions() bool projectExists = true; m_saveProjectAction->setEnabled(projectExists); m_saveProjectAsAction->setEnabled(projectExists); - m_closeAction->setEnabled(projectExists); + m_closeProjectAction->setEnabled(projectExists); } @@ -1132,13 +1144,19 @@ RiuProcessMonitor* RiuMainWindow::processMonitor() void RiuMainWindow::slotBuildWindowActions() { m_windowMenu->clear(); + m_windowMenu->addAction(m_newPropertyView); + m_windowMenu->addSeparator(); QList dockWidgets = findChildren(); + + int i = 0; foreach (QDockWidget* dock, dockWidgets) { if (dock) { + if (i == 4) m_windowMenu->addSeparator(); m_windowMenu->addAction(dock->toggleViewAction()); + ++i; } } } @@ -1199,14 +1217,23 @@ void RiuMainWindow::slotNewObjectPropertyView() RimUiTreeView* treeView = NULL; { - QDockWidget* dockWidget = new QDockWidget("Project", this); + QDockWidget* dockWidget = new QDockWidget("Additional Project Tree " + QString::number(additionalProjectTrees.size() + 1), this); dockWidget->setObjectName("dockWidget"); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); treeView = new RimUiTreeView(dockWidget); + treeView->setSelectionMode(QAbstractItemView::ExtendedSelection); + + // Drag and drop configuration + m_treeView->setDragEnabled(true); + m_treeView->viewport()->setAcceptDrops(true); + m_treeView->setDropIndicatorShown(true); + m_treeView->setDragDropMode(QAbstractItemView::DragDrop); + dockWidget->setWidget(treeView); addDockWidget(Qt::RightDockWidgetArea, dockWidget); + additionalProjectTrees.push_back(dockWidget); } treeView->setModel(m_treeModelPdm); @@ -1214,7 +1241,7 @@ void RiuMainWindow::slotNewObjectPropertyView() { - QDockWidget* dockWidget = new QDockWidget("Properties", this); + QDockWidget* dockWidget = new QDockWidget("Additional Property Editor " + QString::number(additionalPropertyEditors.size() + 1), this); dockWidget->setObjectName("dockWidget"); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); @@ -1224,6 +1251,7 @@ void RiuMainWindow::slotNewObjectPropertyView() addDockWidget(Qt::RightDockWidgetArea, dockWidget); connect(treeView, SIGNAL(selectedObjectChanged( caf::PdmObject* )), propView, SLOT(showProperties( caf::PdmObject* ))); + additionalPropertyEditors.push_back(dockWidget); } } diff --git a/ApplicationCode/UserInterface/RiuMainWindow.h b/ApplicationCode/UserInterface/RiuMainWindow.h index 463599aa36..d8ffab1ecc 100644 --- a/ApplicationCode/UserInterface/RiuMainWindow.h +++ b/ApplicationCode/UserInterface/RiuMainWindow.h @@ -104,14 +104,14 @@ private: private: // File actions - QAction* m_openAction; + QAction* m_openEclipseCaseAction; QAction* m_openInputEclipseFileAction; QAction* m_openMultipleEclipseCasesAction; QAction* m_openProjectAction; QAction* m_openLastUsedProjectAction; QAction* m_saveProjectAction; QAction* m_saveProjectAsAction; - QAction* m_closeAction; + QAction* m_closeProjectAction; QAction* m_exitAction; // Edit actions @@ -146,6 +146,7 @@ private: // Toolbars QToolBar* m_viewToolBar; QToolBar* m_standardToolBar; + QToolBar* m_snapshotToolbar; QFrame* m_CentralFrame; @@ -224,4 +225,8 @@ private: RimUiTreeModelPdm* m_treeModelPdm; caf::PdmObject* m_pdmRoot; caf::PdmUiPropertyView* m_pdmUiPropertyView; + + std::vector > additionalProjectTrees; + std::vector > additionalPropertyEditors; + };