#4775 Summary : Add text based curve creation to toolbar

This commit is contained in:
Magne Sjaastad 2019-10-21 16:18:07 +02:00
parent 3a174edf0e
commit 7be2cc3031
6 changed files with 114 additions and 13 deletions

View File

@ -2023,17 +2023,27 @@ std::vector<caf::PdmFieldHandle*> RimSummaryPlot::fieldsToShowInToolbar()
{ {
std::vector<caf::PdmFieldHandle*> toolBarFields; std::vector<caf::PdmFieldHandle*> toolBarFields;
auto sourceObject = sourceSteppingObjectForKeyEventHandling();
if ( sourceObject )
{ {
toolBarFields = sourceObject->fieldsToShowInToolbar(); auto fields = m_textCurveSetEditor->fieldsToShowInToolbar();
toolBarFields.insert( std::end( toolBarFields ), std::begin( fields ), std::end( fields ) );
} }
if ( toolBarFields.empty() ) bool anyFieldsAvailableForSummary = false;
auto sourceObject = sourceSteppingObjectForKeyEventHandling();
if ( sourceObject )
{
auto fields = sourceObject->fieldsToShowInToolbar();
toolBarFields.insert( std::end( toolBarFields ), std::begin( fields ), std::end( fields ) );
anyFieldsAvailableForSummary = !fields.empty();
}
if ( !anyFieldsAvailableForSummary )
{ {
// Show ensemble stepping if no fields are available from summary stepping // Show ensemble stepping if no fields are available from summary stepping
toolBarFields = ensembleCurveSetCollection()->fieldsToShowInToolbar(); auto fields = ensembleCurveSetCollection()->fieldsToShowInToolbar();
toolBarFields.insert( std::end( toolBarFields ), std::begin( fields ), std::end( fields ) );
} }
return toolBarFields; return toolBarFields;

View File

@ -19,12 +19,14 @@
#include "RimSummaryPlotFilterTextCurveSetEditor.h" #include "RimSummaryPlotFilterTextCurveSetEditor.h"
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RiaGuiApplication.h"
#include "RiaLogging.h" #include "RiaLogging.h"
#include "RiaSummaryCurveDefinition.h" #include "RiaSummaryCurveDefinition.h"
#include "RifSummaryReaderInterface.h" #include "RifSummaryReaderInterface.h"
#include "RigCaseCellResultsData.h" #include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h" #include "RigEclipseCaseData.h"
#include "RimEclipseCase.h" #include "RimEclipseCase.h"
#include "RimEnsembleCurveSet.h" #include "RimEnsembleCurveSet.h"
#include "RimEnsembleCurveSetCollection.h" #include "RimEnsembleCurveSetCollection.h"
@ -41,11 +43,14 @@
#include "RimSummaryCurve.h" #include "RimSummaryCurve.h"
#include "RimSummaryCurveCollection.h" #include "RimSummaryCurveCollection.h"
#include "RimSummaryPlot.h" #include "RimSummaryPlot.h"
#include "RiuPlotMainWindow.h"
#include "RiuSummaryCurveDefSelection.h" #include "RiuSummaryCurveDefSelection.h"
#include "SummaryPlotCommands/RicSummaryPlotFeatureImpl.h" #include "SummaryPlotCommands/RicSummaryPlotFeatureImpl.h"
#include "WellLogCommands/RicWellLogPlotCurveFeatureImpl.h" #include "WellLogCommands/RicWellLogPlotCurveFeatureImpl.h"
#include "cafPdmUiLabelEditor.h"
#include "cafPdmUiTextEditor.h" #include "cafPdmUiTextEditor.h"
#include "cafPdmUiTreeSelectionEditor.h" #include "cafPdmUiTreeSelectionEditor.h"
@ -72,6 +77,11 @@ RimSummaryPlotFilterTextCurveSetEditor::RimSummaryPlotFilterTextCurveSetEditor()
" \"BPR:15,28,*\" (no space) Oil phase pressure for all blocks along k as separate curves.\n"; " \"BPR:15,28,*\" (no space) Oil phase pressure for all blocks along k as separate curves.\n";
// clang-format on // clang-format on
CAF_PDM_InitFieldNoDefault( &m_curveFilterLabelText, "Summary", "Summary", "", "", "" );
m_curveFilterLabelText.uiCapability()->setUiEditorTypeName( caf::PdmUiLabelEditor::uiEditorTypeName() );
m_curveFilterLabelText.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
m_curveFilterLabelText.xmlCapability()->disableIO();
CAF_PDM_InitFieldNoDefault( &m_curveFilterText, "CurveFilterText", "Curve Filter Text", "", filterTextToolTip, "" ); CAF_PDM_InitFieldNoDefault( &m_curveFilterText, "CurveFilterText", "Curve Filter Text", "", filterTextToolTip, "" );
m_curveFilterText.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN ); m_curveFilterText.uiCapability()->setUiLabelPosition( caf::PdmUiItemInfo::HIDDEN );
// m_curveFilterText.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() ); // m_curveFilterText.uiCapability()->setUiEditorTypeName( caf::PdmUiTextEditor::uiEditorTypeName() );
@ -87,6 +97,23 @@ RimSummaryPlotFilterTextCurveSetEditor::RimSummaryPlotFilterTextCurveSetEditor()
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RimSummaryPlotFilterTextCurveSetEditor::~RimSummaryPlotFilterTextCurveSetEditor() {} RimSummaryPlotFilterTextCurveSetEditor::~RimSummaryPlotFilterTextCurveSetEditor() {}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
std::vector<caf::PdmFieldHandle*> RimSummaryPlotFilterTextCurveSetEditor::fieldsToShowInToolbar()
{
std::vector<caf::PdmFieldHandle*> fields;
fields.push_back( &m_curveFilterLabelText );
fields.push_back( &m_curveFilterText );
return fields;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RimSummaryPlotFilterTextCurveSetEditor::updateCurveFilterText() {}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -266,9 +293,20 @@ void RimSummaryPlotFilterTextCurveSetEditor::fieldChangedByUi( const caf::PdmFie
if ( changedField == &m_curveFilterText ) if ( changedField == &m_curveFilterText )
{ {
m_curveFilterText = curveFilterTextWithoutOutdatedLabel(); m_curveFilterText = curveFilterTextWithoutOutdatedLabel();
m_curveFilterText.uiCapability()->updateConnectedEditors();
} }
m_isFieldRecentlyChangedFromGui = true; m_isFieldRecentlyChangedFromGui = true;
if ( RiaGuiApplication::isRunning() )
{
RiuPlotMainWindow* mainPlotWindow = RiaGuiApplication::instance()->mainPlotWindow();
if ( mainPlotWindow )
{
mainPlotWindow->updateSummaryPlotToolBar();
}
}
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -342,6 +380,8 @@ void RimSummaryPlotFilterTextCurveSetEditor::defineUiOrdering( QString uiConfigN
{ {
m_curveFilterText = curveFilterTextWithoutOutdatedLabel(); m_curveFilterText = curveFilterTextWithoutOutdatedLabel();
} }
m_curveFilterText.uiCapability()->updateConnectedEditors();
} }
m_isFieldRecentlyChangedFromGui = false; m_isFieldRecentlyChangedFromGui = false;

View File

@ -31,6 +31,10 @@ public:
RimSummaryPlotFilterTextCurveSetEditor(); RimSummaryPlotFilterTextCurveSetEditor();
~RimSummaryPlotFilterTextCurveSetEditor() override; ~RimSummaryPlotFilterTextCurveSetEditor() override;
std::vector<caf::PdmFieldHandle*> fieldsToShowInToolbar();
void updateCurveFilterText();
protected: protected:
QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions, QList<caf::PdmOptionItemInfo> calculateValueOptions( const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly ) override; bool* useOptionsOnly ) override;
@ -49,7 +53,9 @@ private:
QString curveFilterTextWithoutOutdatedLabel() const; QString curveFilterTextWithoutOutdatedLabel() const;
caf::PdmPtrArrayField<SummarySource*> m_selectedSources; caf::PdmPtrArrayField<SummarySource*> m_selectedSources;
caf::PdmField<QString> m_curveFilterText;
caf::PdmField<QString> m_curveFilterLabelText;
caf::PdmField<QString> m_curveFilterText;
bool m_isFieldRecentlyChangedFromGui; bool m_isFieldRecentlyChangedFromGui;
}; };

View File

@ -558,23 +558,22 @@ void RiuPlotMainWindow::updateSummaryPlotToolBar( bool forceUpdateUi )
{ {
std::vector<caf::PdmFieldHandle*> toolBarFields = summaryPlot->fieldsToShowInToolbar(); std::vector<caf::PdmFieldHandle*> toolBarFields = summaryPlot->fieldsToShowInToolbar();
QString keyword;
if ( !m_summaryPlotToolBarEditor->isEditorDataValid( toolBarFields ) ) if ( !m_summaryPlotToolBarEditor->isEditorDataValid( toolBarFields ) )
{ {
keyword = m_summaryPlotToolBarEditor->keywordForWidgetWithFocus();
m_summaryPlotToolBarEditor->setFields( toolBarFields ); m_summaryPlotToolBarEditor->setFields( toolBarFields );
} }
else if ( forceUpdateUi )
{
m_summaryPlotToolBarEditor->updateUi();
}
m_summaryPlotToolBarEditor->updateUi(); m_summaryPlotToolBarEditor->updateUi();
m_summaryPlotToolBarEditor->show(); m_summaryPlotToolBarEditor->show();
m_summaryPlotToolBarEditor->setKeyboardFocusFromKeyword( keyword );
} }
else else
{ {
m_summaryPlotToolBarEditor->clear(); m_summaryPlotToolBarEditor->clear();
m_summaryPlotToolBarEditor->hide(); m_summaryPlotToolBarEditor->hide();
} }

View File

@ -232,6 +232,22 @@ void PdmUiToolBarEditor::clear()
m_actions.clear(); m_actions.clear();
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void PdmUiToolBarEditor::setKeyboardFocusFromKeyword(const QString& fieldKeyword)
{
auto fieldView = m_fieldViews[fieldKeyword];
if (fieldView)
{
auto editorWidget = fieldView->editorWidget();
if (editorWidget)
{
editorWidget->setFocus(Qt::ActiveWindowFocusReason);
}
}
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -254,4 +270,30 @@ void PdmUiToolBarEditor::hide()
} }
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QString PdmUiToolBarEditor::keywordForWidgetWithFocus()
{
QString keyword;
if (m_toolbar->isVisible())
{
for (auto fieldViewPair : m_fieldViews)
{
auto fieldView = fieldViewPair.second;
if (fieldView)
{
auto editorWidget = fieldView->editorWidget();
if (editorWidget && editorWidget->hasFocus())
{
keyword = fieldViewPair.first;
}
}
}
}
return keyword;
}
} // end namespace caf } // end namespace caf

View File

@ -64,10 +64,14 @@ public:
bool isEditorDataValid(const std::vector<caf::PdmFieldHandle*>& fields) const; bool isEditorDataValid(const std::vector<caf::PdmFieldHandle*>& fields) const;
void setFields(std::vector<caf::PdmFieldHandle*>& fields); void setFields(std::vector<caf::PdmFieldHandle*>& fields);
void clear(); void clear();
void setKeyboardFocusFromKeyword(const QString& fieldKeyword);
QString keywordForWidgetWithFocus();
void show(); void show();
void hide(); void hide();
private: private:
void configureAndUpdateUi(const QString& uiConfigName) override; void configureAndUpdateUi(const QString& uiConfigName) override;