#1889 Curve Creator : Add dialog with splitter

This commit is contained in:
Magne Sjaastad 2017-09-15 10:48:38 +02:00
parent f3dc48c59a
commit f1f5ead0ba
9 changed files with 437 additions and 94 deletions

View File

@ -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
)

View File

@ -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();
}
//--------------------------------------------------------------------------------------------------

View File

@ -22,7 +22,8 @@
#include <QPointer>
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<RicSummaryCurveCreatorUi> m_dialog;
RicSummaryCurveCreator* m_curveCreator;
QPointer<RicSummaryCurveCreatorDialog> m_dialogWithSplitter;
};

View File

@ -16,20 +16,27 @@
//
/////////////////////////////////////////////////////////////////////////////////
#include <sstream>
#include <stack>
#include <algorithm>
#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 <algorithm>
#include <sstream>
#include <stack>
CAF_PDM_SOURCE_INIT(RicSummaryCurveCreator, "RicSummaryCurveCreator");
@ -273,69 +280,39 @@ QList<caf::PdmOptionItemInfo> 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<std::vector<QString>>* 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);

View File

@ -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 <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RicSummaryCurveCreatorDialog.h"
#include "RicSummaryCurveCreator.h"
#include "RicSummaryCurveCreatorSplitterUi.h"
#include <QVBoxLayout>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
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()
{
}

View File

@ -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 <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include <QDialog>
class RicSummaryCurveCreatorSplitterUi;
class RicSummaryCurveCreator;
class RicSummaryCurveCreatorDialog : public QDialog
{
public:
RicSummaryCurveCreatorDialog(QWidget* parent, RicSummaryCurveCreator* summaryCurveCreator);
~RicSummaryCurveCreatorDialog();
private:
RicSummaryCurveCreatorSplitterUi* m_curveCreatorSplitterUi;
};

View File

@ -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 <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#include "RicSummaryCurveCreatorSplitterUi.h"
#include "RicSummaryCurveCreator.h"
#include "RicSummaryCurveCreatorUiKeywords.h"
#include "cafPdmUiGroup.h"
#include "cafPdmUiTreeView.h"
#include "QMinimizePanel.h"
#include <QBoxLayout>
#include <QSplitter>
#include <QFrame>
#include <QTreeView>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicSummaryCurveCreatorSplitterUi::RicSummaryCurveCreatorSplitterUi(QWidget* parent)
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
RicSummaryCurveCreatorSplitterUi::~RicSummaryCurveCreatorSplitterUi()
{
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicSummaryCurveCreatorSplitterUi::recursivelyConfigureAndUpdateTopLevelUiItems(const std::vector<caf::PdmUiItem *>& 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<caf::PdmUiGroup*>(topLevelUiItems[i]);
QMinimizePanel* groupBox = findOrCreateGroupBox(this->widget(), group, uiConfigName);
m_firstRowLayout->addWidget(groupBox);
const std::vector<caf::PdmUiItem*>& 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<caf::PdmUiItem*>& 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<caf::PdmUiItem *>& topLevelUiItems, const QString& keyword, const QString& uiConfigName)
{
for (auto uiItem : topLevelUiItems)
{
if (uiItem->isUiHidden(uiConfigName)) continue;
if (uiItem->isUiGroup())
{
caf::PdmUiGroup* group = static_cast<caf::PdmUiGroup*>(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<RicSummaryCurveCreator*>(this->pdmItem());
if (sumCurveCreator)
{
curveTreeView->setPdmItem(sumCurveCreator->previewPlot());
}
curveTreeView->treeView()->setHeaderHidden(true);
}
return m_curvesPanel;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QWidget* RicSummaryCurveCreatorSplitterUi::getOrCreatePlotWidget()
{
RicSummaryCurveCreator* sumCurveCreator = dynamic_cast<RicSummaryCurveCreator*>(this->pdmItem());
if (sumCurveCreator)
{
// TODO: Rename previewPlot()->createViewWidget to getOrCreateViewWidget
return sumCurveCreator->previewPlot()->createViewWidget(this->widget());
}
return nullptr;
}

View File

@ -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 <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include "cafPdmUiWidgetBasedObjectEditor.h"
#include <vector>
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<caf::PdmUiItem *>& topLevelUiItems,
const QString& uiConfigName) override;
virtual QWidget* createWidget(QWidget* parent) override;
QWidget* getOrCreateCurveTreeWidget();
QWidget* getOrCreatePlotWidget();
static caf::PdmUiGroup* findGroupByKeyword(const std::vector<caf::PdmUiItem *>& topLevelUiItems,
const QString& keyword,
const QString& uiConfigName);
private:
QPointer<QVBoxLayout> m_layout;
QPointer<QSplitter> m_firstColumnSplitter;
QPointer<QMinimizePanel> m_curvesPanel;
QPointer<QHBoxLayout> m_firstRowLayout;
QPointer<QHBoxLayout> m_secondRowLayout;
QPointer<QVBoxLayout> m_lowerLeftLayout;
};

View File

@ -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 <http://www.gnu.org/licenses/gpl.html>
// for more details.
//
/////////////////////////////////////////////////////////////////////////////////
#pragma once
#include <QString>
//==================================================================================================
///
///
//==================================================================================================
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"; };
};