diff --git a/ApplicationCode/Commands/SummaryPlotCommands/CMakeLists_files.cmake b/ApplicationCode/Commands/SummaryPlotCommands/CMakeLists_files.cmake index 6134e9d889..20a37e3fe6 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/CMakeLists_files.cmake +++ b/ApplicationCode/Commands/SummaryPlotCommands/CMakeLists_files.cmake @@ -24,6 +24,9 @@ ${CEE_CURRENT_LIST_DIR}RicPasteAsciiDataCurveFeature.h ${CEE_CURRENT_LIST_DIR}RicEditSummaryCurves.h ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreator.h ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorUi.h +${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorSplitterUi.h +${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorDialog.h +${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorUiKeywords.h ) set (SOURCE_GROUP_SOURCE_FILES @@ -45,6 +48,8 @@ ${CEE_CURRENT_LIST_DIR}RicPasteAsciiDataCurveFeature.cpp ${CEE_CURRENT_LIST_DIR}RicEditSummaryCurves.cpp ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreator.cpp ${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorUi.cpp +${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorSplitterUi.cpp +${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorDialog.cpp ) list(APPEND CODE_HEADER_FILES @@ -56,6 +61,8 @@ ${SOURCE_GROUP_SOURCE_FILES} ) list(APPEND QT_MOC_HEADERS +${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorSplitterUi.h +${CEE_CURRENT_LIST_DIR}RicSummaryCurveCreatorDialog.h ) diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryCurves.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryCurves.cpp index e4ca0c7dfe..53182bafb9 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryCurves.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryCurves.cpp @@ -22,7 +22,7 @@ #include "RiaPreferences.h" #include "RicSummaryCurveCreator.h" -#include "RicSummaryCurveCreatorUi.h" +#include "RicSummaryCurveCreatorDialog.h" #include "cafPdmUiPropertyViewDialog.h" @@ -49,21 +49,14 @@ void RicEditSummaryCurves::onActionTriggered(bool isChecked) RimProject* project = RiaApplication::instance()->project(); CVF_ASSERT(project); - if (m_curveCreator == nullptr) { m_curveCreator = new RicSummaryCurveCreator(); - m_dialog = new RicSummaryCurveCreatorUi(nullptr, m_curveCreator); + m_dialogWithSplitter = new RicSummaryCurveCreatorDialog(nullptr, m_curveCreator); } - if(!m_dialog->isVisible()) - m_dialog->show(); - - // RicSummaryCurveCreator curveCreator; - // RicSummaryCurveCreatorUi summaryCurveCreator(nullptr, &curveCreator); - // summaryCurveCreator.exec(); - -// openSelector(summaryCase); + if (!m_dialogWithSplitter->isVisible()) + m_dialogWithSplitter->show(); } //-------------------------------------------------------------------------------------------------- diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryCurves.h b/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryCurves.h index da9b518b55..698f7acb53 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryCurves.h +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicEditSummaryCurves.h @@ -22,7 +22,8 @@ #include class RicSummaryCurveCreator; -class RicSummaryCurveCreatorUi; +class RicSummaryCurveCreatorDialog; + namespace caf { class PdmUiPropertyViewDialog; } @@ -41,6 +42,6 @@ protected: virtual void setupActionLook(QAction* actionToSetup); private: - RicSummaryCurveCreator* m_curveCreator; - QPointer m_dialog; + RicSummaryCurveCreator* m_curveCreator; + QPointer m_dialogWithSplitter; }; diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp index 22482b6752..3c8cda1014 100644 --- a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreator.cpp @@ -16,20 +16,27 @@ // ///////////////////////////////////////////////////////////////////////////////// -#include -#include -#include #include "RicSummaryCurveCreator.h" #include "RiaApplication.h" + +#include "RicSummaryCurveCreatorUiKeywords.h" + #include "RifReaderEclipseSummary.h" + #include "RigSummaryCaseData.h" + #include "RimProject.h" #include "RimSummaryCase.h" #include "RimSummaryCase.h" +#include "RimSummaryPlot.h" + #include "cafPdmUiListEditor.h" #include "cafPdmUiTreeSelectionEditor.h" -#include "RimSummaryPlot.h" + +#include +#include +#include CAF_PDM_SOURCE_INIT(RicSummaryCurveCreator, "RicSummaryCurveCreator"); @@ -273,69 +280,39 @@ QList RicSummaryCurveCreator::calculateValueOptions(cons //-------------------------------------------------------------------------------------------------- void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) { - caf::PdmUiGroup* sourcesGroup = uiOrdering.addNewGroup("Sources"); + caf::PdmUiGroup* sourcesGroup = uiOrdering.addNewGroupWithKeyword("Sources", RicSummaryCurveCreatorUiKeywords::sources()); sourcesGroup->add(&m_selectedCases); - caf::PdmUiGroup* itemTypesGroup = uiOrdering.addNewGroup("Identifier Types"); + caf::PdmUiGroup* itemTypesGroup = uiOrdering.addNewGroupWithKeyword("Identifier Types", RicSummaryCurveCreatorUiKeywords::summaryTypes()); itemTypesGroup->add(&m_selectedSummaryCategory); + caf::PdmField>* summaryiesField = nullptr; RifEclipseSummaryAddress::SummaryVarCategory sumCategory = m_selectedSummaryCategory(); if (sumCategory == RifEclipseSummaryAddress::SUMMARY_FIELD) { - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Blank"); - } - - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_FIELD][0]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_FIELD][0]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_AQUIFER) { - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Blank"); - } - - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_AQUIFER][0]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_AQUIFER][0]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_NETWORK) { - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Blank"); - } - - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_NETWORK][0]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_NETWORK][0]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_MISC) { - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Blank"); - } - - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_MISC][0]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_MISC][0]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_REGION) { { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Regions"); + caf::PdmUiGroup* myGroup = uiOrdering.addNewGroupWithKeyword("Regions", "RegionsKeyword"); myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_REGION][0]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_REGION][1]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_REGION][1]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION) { @@ -345,10 +322,7 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION][1]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION][2]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_REGION_2_REGION][2]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_WELL_GROUP) { @@ -357,10 +331,7 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_GROUP][0]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_GROUP][1]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_GROUP][1]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_WELL) { @@ -369,10 +340,7 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL][0]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL][1]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL][1]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION) { @@ -382,10 +350,7 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION][1]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION][2]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION][2]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR) { @@ -396,10 +361,7 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR][2]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR][3]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_COMPLETION_LGR][3]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_WELL_LGR) { @@ -409,10 +371,7 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_LGR][1]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_LGR][2]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_LGR][2]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT) { @@ -422,10 +381,7 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT][1]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT][2]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_WELL_SEGMENT][2]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_BLOCK) { @@ -434,10 +390,7 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK][0]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK][1]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK][1]->pdmField(); } else if (sumCategory == RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR) { @@ -447,14 +400,16 @@ void RicSummaryCurveCreator::defineUiOrdering(QString uiConfigName, caf::PdmUiOr myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][1]->pdmField()); } - { - caf::PdmUiGroup* myGroup = uiOrdering.addNewGroup("Properties"); - myGroup->add(m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][2]->pdmField()); - } + summaryiesField = m_identifierFieldsMap[RifEclipseSummaryAddress::SUMMARY_BLOCK_LGR][2]->pdmField(); } + CAF_ASSERT(summaryiesField); + caf::PdmUiGroup* summariesGroup = uiOrdering.addNewGroupWithKeyword("Summaries", RicSummaryCurveCreatorUiKeywords::summaries()); + summariesGroup->add(summaryiesField); + + // Appearance settings - caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroup("Appearance Settings"); + caf::PdmUiGroup* appearanceGroup = uiOrdering.addNewGroupWithKeyword("Appearance Settings", RicSummaryCurveCreatorUiKeywords::appearance()); //appearanceGroup->setCollapsedByDefault(true); appearanceGroup->add(&m_useAutoAppearanceAssignment); appearanceGroup->add(&m_caseAppearanceType); diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.cpp new file mode 100644 index 0000000000..a9541431dd --- /dev/null +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.cpp @@ -0,0 +1,50 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017- Statoil ASA +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#include "RicSummaryCurveCreatorDialog.h" + +#include "RicSummaryCurveCreator.h" +#include "RicSummaryCurveCreatorSplitterUi.h" + +#include + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RicSummaryCurveCreatorDialog::RicSummaryCurveCreatorDialog(QWidget* parent, RicSummaryCurveCreator* summaryCurveCreator) + : QDialog(parent) +{ + m_curveCreatorSplitterUi = new RicSummaryCurveCreatorSplitterUi(this); + + QWidget* propertyWidget = m_curveCreatorSplitterUi->getOrCreateWidget(this); + + QVBoxLayout* dummy = new QVBoxLayout(this); + dummy->setContentsMargins(0, 0, 0, 0); + dummy->addWidget(propertyWidget); + + m_curveCreatorSplitterUi->setPdmObject(summaryCurveCreator); + m_curveCreatorSplitterUi->updateUi(); +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RicSummaryCurveCreatorDialog::~RicSummaryCurveCreatorDialog() +{ + +} diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.h b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.h new file mode 100644 index 0000000000..e5341c7507 --- /dev/null +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorDialog.h @@ -0,0 +1,34 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017- Statoil ASA +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include + +class RicSummaryCurveCreatorSplitterUi; +class RicSummaryCurveCreator; + +class RicSummaryCurveCreatorDialog : public QDialog +{ +public: + RicSummaryCurveCreatorDialog(QWidget* parent, RicSummaryCurveCreator* summaryCurveCreator); + ~RicSummaryCurveCreatorDialog(); + +private: + RicSummaryCurveCreatorSplitterUi* m_curveCreatorSplitterUi; +}; diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorSplitterUi.cpp b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorSplitterUi.cpp new file mode 100644 index 0000000000..694912e678 --- /dev/null +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorSplitterUi.cpp @@ -0,0 +1,194 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017- Statoil ASA +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#include "RicSummaryCurveCreatorSplitterUi.h" + +#include "RicSummaryCurveCreator.h" +#include "RicSummaryCurveCreatorUiKeywords.h" +#include "cafPdmUiGroup.h" +#include "cafPdmUiTreeView.h" + +#include "QMinimizePanel.h" + +#include +#include +#include +#include + + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RicSummaryCurveCreatorSplitterUi::RicSummaryCurveCreatorSplitterUi(QWidget* parent) +{ +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +RicSummaryCurveCreatorSplitterUi::~RicSummaryCurveCreatorSplitterUi() +{ + +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +void RicSummaryCurveCreatorSplitterUi::recursivelyConfigureAndUpdateTopLevelUiItems(const std::vector& topLevelUiItems, const QString& uiConfigName) +{ + if (!m_layout) return; + + int splitterPositionIndex = 0; + for (size_t i = 0; i < topLevelUiItems.size(); ++i) + { + if (topLevelUiItems[i]->isUiHidden(uiConfigName)) continue; + + if (topLevelUiItems[i]->isUiGroup()) + { + caf::PdmUiGroup* group = static_cast(topLevelUiItems[i]); + + QMinimizePanel* groupBox = findOrCreateGroupBox(this->widget(), group, uiConfigName); + + m_firstRowLayout->addWidget(groupBox); + + const std::vector& groupChildren = group->uiItems(); + recursivelyConfigureAndUpdateUiItemsInGridLayoutColumn(groupChildren, groupBox->contentFrame(), uiConfigName); + + // Add group boxes until summaries are detected + + if (group->keyword() == RicSummaryCurveCreatorUiKeywords::summaries()) + break; + } + } + + + { + caf::PdmUiGroup* group = findGroupByKeyword(topLevelUiItems, RicSummaryCurveCreatorUiKeywords::appearance(), uiConfigName); + + QMinimizePanel* groupBox = findOrCreateGroupBox(this->widget(), group, uiConfigName); + + m_lowerLeftLayout->insertWidget(0, groupBox); + + const std::vector& groupChildren = group->uiItems(); + recursivelyConfigureAndUpdateUiItemsInGridLayoutColumn(groupChildren, groupBox->contentFrame(), uiConfigName); + } + + + m_lowerLeftLayout->insertWidget(1, getOrCreateCurveTreeWidget()); + + m_secondRowLayout->insertWidget(1, getOrCreatePlotWidget()); + + // NB! Only groups at top level are handled, fields at top level are not added to layout + +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QWidget* RicSummaryCurveCreatorSplitterUi::createWidget(QWidget* parent) +{ + QWidget* widget = new QWidget(parent); + + m_layout = new QVBoxLayout(); + m_layout->setContentsMargins(0, 0, 0, 0); + widget->setLayout(m_layout); + + QFrame* firstRowFrame = new QFrame(widget); + m_firstRowLayout = new QHBoxLayout; + firstRowFrame->setLayout(m_firstRowLayout); + + QFrame* secondRowFrame = new QFrame(widget); + m_secondRowLayout = new QHBoxLayout; + secondRowFrame->setLayout(m_secondRowLayout); + + m_lowerLeftLayout = new QVBoxLayout; + m_secondRowLayout->addLayout(m_lowerLeftLayout); + + m_firstColumnSplitter = new QSplitter(Qt::Vertical); + m_firstColumnSplitter->insertWidget(0, firstRowFrame); + m_firstColumnSplitter->insertWidget(1, secondRowFrame); + + m_layout->addWidget(m_firstColumnSplitter); + + return widget; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +caf::PdmUiGroup* RicSummaryCurveCreatorSplitterUi::findGroupByKeyword(const std::vector& topLevelUiItems, const QString& keyword, const QString& uiConfigName) +{ + for (auto uiItem : topLevelUiItems) + { + if (uiItem->isUiHidden(uiConfigName)) continue; + + if (uiItem->isUiGroup()) + { + caf::PdmUiGroup* group = static_cast(uiItem); + if (group->keyword() == keyword) + { + return group; + } + } + } + + return nullptr; +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QWidget* RicSummaryCurveCreatorSplitterUi::getOrCreateCurveTreeWidget() +{ + if (!m_curvesPanel) + { + m_curvesPanel = new QMinimizePanel(this->widget()); + m_curvesPanel->setTitle("Curves"); + QVBoxLayout* curvesLayout = new QVBoxLayout(m_curvesPanel->contentFrame()); + + caf::PdmUiTreeView* curveTreeView = new caf::PdmUiTreeView(m_curvesPanel->contentFrame()); + curvesLayout->addWidget(curveTreeView); + + RicSummaryCurveCreator* sumCurveCreator = dynamic_cast(this->pdmItem()); + if (sumCurveCreator) + { + curveTreeView->setPdmItem(sumCurveCreator->previewPlot()); + } + + curveTreeView->treeView()->setHeaderHidden(true); + } + + return m_curvesPanel; + +} + +//-------------------------------------------------------------------------------------------------- +/// +//-------------------------------------------------------------------------------------------------- +QWidget* RicSummaryCurveCreatorSplitterUi::getOrCreatePlotWidget() +{ + RicSummaryCurveCreator* sumCurveCreator = dynamic_cast(this->pdmItem()); + if (sumCurveCreator) + { + // TODO: Rename previewPlot()->createViewWidget to getOrCreateViewWidget + return sumCurveCreator->previewPlot()->createViewWidget(this->widget()); + } + + return nullptr; +} + diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorSplitterUi.h b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorSplitterUi.h new file mode 100644 index 0000000000..b7bc3a4164 --- /dev/null +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorSplitterUi.h @@ -0,0 +1,66 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017- Statoil ASA +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + +#pragma once + +#include "cafPdmUiWidgetBasedObjectEditor.h" + +#include + +class RicSummaryCurveCreator; + +class QHBoxLayout; +class QMinimizePanel; +class QSplitter; +class QString; +class QVBoxLayout; + +namespace caf { + class PdmUiItem; +} + + +class RicSummaryCurveCreatorSplitterUi : public caf::PdmUiWidgetBasedObjectEditor +{ +public: + RicSummaryCurveCreatorSplitterUi(QWidget* parent); + ~RicSummaryCurveCreatorSplitterUi(); + +private: + virtual void recursivelyConfigureAndUpdateTopLevelUiItems(const std::vector& topLevelUiItems, + const QString& uiConfigName) override; + + virtual QWidget* createWidget(QWidget* parent) override; + + QWidget* getOrCreateCurveTreeWidget(); + QWidget* getOrCreatePlotWidget(); + + static caf::PdmUiGroup* findGroupByKeyword(const std::vector& topLevelUiItems, + const QString& keyword, + const QString& uiConfigName); + +private: + QPointer m_layout; + QPointer m_firstColumnSplitter; + + QPointer m_curvesPanel; + + QPointer m_firstRowLayout; + QPointer m_secondRowLayout; + QPointer m_lowerLeftLayout; +}; diff --git a/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorUiKeywords.h b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorUiKeywords.h new file mode 100644 index 0000000000..c8b966bbec --- /dev/null +++ b/ApplicationCode/Commands/SummaryPlotCommands/RicSummaryCurveCreatorUiKeywords.h @@ -0,0 +1,43 @@ +///////////////////////////////////////////////////////////////////////////////// +// +// Copyright (C) 2017 Statoil ASA +// +// ResInsight is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY +// WARRANTY; without even the implied warranty of MERCHANTABILITY or +// FITNESS FOR A PARTICULAR PURPOSE. +// +// See the GNU General Public License at +// for more details. +// +///////////////////////////////////////////////////////////////////////////////// + + +#pragma once + +#include + + +//================================================================================================== +/// +/// +//================================================================================================== +class RicSummaryCurveCreatorUiKeywords +{ +public: + static QString sources() { return "SourcesKeyword"; }; + static QString summaryTypes() { return "SummaryTypesKeyword"; }; + static QString summaries() { return "SummariesKeyword"; }; + static QString regions() { return "RegionsKeyword"; }; + static QString region2region() { return "Region2RegionKeyword"; }; + static QString wellGroup() { return "WellGroupKeyword"; }; + static QString wells() { return "WellsKeyword"; }; + static QString completions() { return "CompletionsKeyword"; }; + static QString lgrWells() { return "LgrWellsKeyword"; }; + static QString wellSegments() { return "WellSegmentsKeyword"; }; + static QString appearance() { return "AppearanceKeyword"; }; +};