diff --git a/ApplicationLibCode/UserInterface/RiuDockWidgetTools.cpp b/ApplicationLibCode/UserInterface/RiuDockWidgetTools.cpp index faf5df7854..9b0a185201 100644 --- a/ApplicationLibCode/UserInterface/RiuDockWidgetTools.cpp +++ b/ApplicationLibCode/UserInterface/RiuDockWidgetTools.cpp @@ -175,6 +175,14 @@ QString RiuDockWidgetTools::plotMainWindowPlotManagerName() return "dockSummaryPlotManager"; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QString RiuDockWidgetTools::plotMainWindowCurveAppearanceName() +{ + return "dockCurveAppearance"; +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- @@ -419,6 +427,8 @@ QIcon RiuDockWidgetTools::dockIcon( const QString dockWidgetName ) return QIcon( ":/undo-stack.svg" ); else if ( dockWidgetName == plotMainWindowPlotManagerName() ) return QIcon( ":/plot-manager.svg" ); + else if ( dockWidgetName == plotMainWindowCurveAppearanceName() ) + return QIcon( ":/property-editor.svg" ); else if ( dockWidgetName == mainWindowPropertyEditorName() ) return QIcon( ":/property-editor.svg" ); else if ( dockWidgetName == mainWindowResultInfoName() ) diff --git a/ApplicationLibCode/UserInterface/RiuDockWidgetTools.h b/ApplicationLibCode/UserInterface/RiuDockWidgetTools.h index 59b47268ca..9ab9266a45 100644 --- a/ApplicationLibCode/UserInterface/RiuDockWidgetTools.h +++ b/ApplicationLibCode/UserInterface/RiuDockWidgetTools.h @@ -83,6 +83,7 @@ public: static QString plotMainWindowMessagesName(); static QString plotMainWindowUndoStackName(); static QString plotMainWindowPlotManagerName(); + static QString plotMainWindowCurveAppearanceName(); static QString plotWindowQuickAccessName(); static QString dockState3DEclipseName(); diff --git a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp index f120685e54..993a3137b5 100644 --- a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp +++ b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.cpp @@ -29,6 +29,7 @@ #include "Histogram/RimHistogramMultiPlot.h" #include "Histogram/RimHistogramPlot.h" +#include "RimCurveStyleRules.h" #include "RimEnsembleCurveSetCollection.h" #include "RimMainPlotCollection.h" #include "RimMultiPlot.h" @@ -78,9 +79,11 @@ #include "DockManager.h" #include +#include #include #include #include +#include #include #include #include @@ -125,6 +128,7 @@ RiuPlotMainWindow::~RiuPlotMainWindow() setBeingDestroyed(); m_summaryPlotManagerView->showProperties( nullptr ); + m_curveStyleRulesView->showProperties( nullptr ); setPdmRoot( nullptr ); } @@ -169,6 +173,8 @@ void RiuPlotMainWindow::initializeGuiNewProjectLoaded() setPdmRoot( RimProject::current() ); restoreTreeViewState(); + m_curveStyleRulesView->showProperties( RimProject::current()->curveStyleRules() ); + RimMainPlotCollection* mainPlotColl = RimMainPlotCollection::current(); mainPlotColl->ensureDefaultFlowPlotsAreCreated(); @@ -242,6 +248,7 @@ void RiuPlotMainWindow::cleanupGuiBeforeProjectClose() { pdmUiPropertyView->showProperties( nullptr ); } + m_curveStyleRulesView->showProperties( nullptr ); cleanUpTemporaryWidgets(); @@ -592,6 +599,16 @@ void RiuPlotMainWindow::createDockPanels() rightWidgets.push_back( dockWidget ); } + // the global curve appearance settings (application wide) and per item overrides (stored in the project) + { + auto dockWidget = + RiuDockWidgetTools::createDockWidget( "Curve Appearance", RiuDockWidgetTools::plotMainWindowCurveAppearanceName(), dockManager() ); + + m_curveStyleRulesView = std::make_unique( dockWidget ); + dockWidget->setWidget( m_curveStyleRulesView.get() ); + rightWidgets.push_back( dockWidget ); + } + // the undo stack if ( m_undoView && RiaPreferences::current()->useUndoRedo() ) { @@ -766,6 +783,28 @@ RiuMessagePanel* RiuPlotMainWindow::messagePanel() return m_messagePanel; } +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RiuPlotMainWindow::showCurveAppearance() +{ + auto dockWidget = RiuDockWidgetTools::findDockWidget( dockManager(), RiuDockWidgetTools::plotMainWindowCurveAppearanceName() ); + if ( !dockWidget ) return; + + dockWidget->toggleView( true ); + dockWidget->raise(); + dockWidget->setAsCurrentTab(); + + // Briefly outline the dock edges so the user sees where the settings are, also when it was already visible + auto outline = new QFrame( dockWidget ); + outline->setAttribute( Qt::WA_TransparentForMouseEvents ); + outline->setStyleSheet( "QFrame { background: transparent; border: 3px solid rgb(255, 160, 0); }" ); + outline->setGeometry( dockWidget->rect() ); + outline->show(); + outline->raise(); + QTimer::singleShot( 1000, outline, &QObject::deleteLater ); +} + //-------------------------------------------------------------------------------------------------- /// //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.h b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.h index 5a31964321..4aa5617c33 100644 --- a/ApplicationLibCode/UserInterface/RiuPlotMainWindow.h +++ b/ApplicationLibCode/UserInterface/RiuPlotMainWindow.h @@ -84,6 +84,7 @@ public: RiuMessagePanel* messagePanel(); void showAndSetKeyboardFocusToSummaryPlotManager(); + void showCurveAppearance(); protected: void closeEvent( QCloseEvent* event ) override; @@ -130,6 +131,7 @@ private: std::unique_ptr m_multiPlotLayoutToolBarEditor; std::unique_ptr m_summaryPlotManagerView; + std::unique_ptr m_curveStyleRulesView; std::unique_ptr m_summaryCurveCreatorDialog; std::unique_ptr m_summaryCurveCalculatorDialog;