mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#3303 Create multiple fractures dialog. Prevent overlapping option items. Remove cancel button
This commit is contained in:
parent
f039f84d84
commit
de903c0fe0
@ -47,6 +47,7 @@
|
|||||||
|
|
||||||
CAF_CMD_SOURCE_INIT(RicCreateMultipleFracturesFeature, "RicCreateMultipleFracturesFeature");
|
CAF_CMD_SOURCE_INIT(RicCreateMultipleFracturesFeature, "RicCreateMultipleFracturesFeature");
|
||||||
|
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -231,6 +232,7 @@ void RicCreateMultipleFracturesFeature::onActionTriggered(bool isChecked)
|
|||||||
Riu3DMainWindowTools::mainWindowWidget(), multipleFractionsUi, "Create Multiple Fractures", "");
|
Riu3DMainWindowTools::mainWindowWidget(), multipleFractionsUi, "Create Multiple Fractures", "");
|
||||||
|
|
||||||
m_dialog = &propertyDialog;
|
m_dialog = &propertyDialog;
|
||||||
|
multipleFractionsUi->setParentDialog(m_dialog);
|
||||||
|
|
||||||
propertyDialog.resize(QSize(700, 450));
|
propertyDialog.resize(QSize(700, 450));
|
||||||
|
|
||||||
@ -239,7 +241,7 @@ void RicCreateMultipleFracturesFeature::onActionTriggered(bool isChecked)
|
|||||||
dialogButtonBox->clear();
|
dialogButtonBox->clear();
|
||||||
|
|
||||||
{
|
{
|
||||||
QPushButton* pushButton = dialogButtonBox->addButton("Replace Fractures", QDialogButtonBox::ActionRole);
|
QPushButton* pushButton = dialogButtonBox->addButton(RiuCreateMultipleFractionsUi::REPLACE_FRACTURES_BUTTON_TEXT, QDialogButtonBox::ActionRole);
|
||||||
connect(pushButton, SIGNAL(clicked()), this, SLOT(slotDeleteAndAppendFractures()));
|
connect(pushButton, SIGNAL(clicked()), this, SLOT(slotDeleteAndAppendFractures()));
|
||||||
pushButton->setDefault(false);
|
pushButton->setDefault(false);
|
||||||
pushButton->setAutoDefault(false);
|
pushButton->setAutoDefault(false);
|
||||||
@ -247,20 +249,13 @@ void RicCreateMultipleFracturesFeature::onActionTriggered(bool isChecked)
|
|||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
QPushButton* pushButton = dialogButtonBox->addButton("Add Fractures", QDialogButtonBox::ActionRole);
|
QPushButton* pushButton = dialogButtonBox->addButton(RiuCreateMultipleFractionsUi::ADD_FRACTURES_BUTTON_TEXT, QDialogButtonBox::ActionRole);
|
||||||
connect(pushButton, SIGNAL(clicked()), this, SLOT(slotAppendFractures()));
|
connect(pushButton, SIGNAL(clicked()), this, SLOT(slotAppendFractures()));
|
||||||
pushButton->setDefault(false);
|
pushButton->setDefault(false);
|
||||||
pushButton->setAutoDefault(false);
|
pushButton->setAutoDefault(false);
|
||||||
pushButton->setToolTip("Add new fractures");
|
pushButton->setToolTip("Add new fractures");
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
|
||||||
QPushButton* pushButton = dialogButtonBox->addButton("Cancel", QDialogButtonBox::ActionRole);
|
|
||||||
connect(pushButton, SIGNAL(clicked()), this, SLOT(slotCancel()));
|
|
||||||
pushButton->setDefault(false);
|
|
||||||
pushButton->setAutoDefault(false);
|
|
||||||
}
|
|
||||||
|
|
||||||
{
|
{
|
||||||
QPushButton* pushButton = dialogButtonBox->addButton("Close", QDialogButtonBox::ActionRole);
|
QPushButton* pushButton = dialogButtonBox->addButton("Close", QDialogButtonBox::ActionRole);
|
||||||
connect(pushButton, SIGNAL(clicked()), this, SLOT(slotClose()));
|
connect(pushButton, SIGNAL(clicked()), this, SLOT(slotClose()));
|
||||||
|
@ -105,10 +105,20 @@ void RicCreateMultipleFracturesOptionItemUi::fieldChangedByUi(const caf::PdmFiel
|
|||||||
const QVariant& oldValue,
|
const QVariant& oldValue,
|
||||||
const QVariant& newValue)
|
const QVariant& newValue)
|
||||||
{
|
{
|
||||||
|
if (changedField == &m_topKOneBased)
|
||||||
|
{
|
||||||
|
if (m_topKOneBased > m_baseKOneBased) m_baseKOneBased = m_topKOneBased;
|
||||||
|
}
|
||||||
|
else if (changedField = &m_baseKOneBased)
|
||||||
|
{
|
||||||
|
if (m_baseKOneBased < m_topKOneBased) m_topKOneBased = m_baseKOneBased;
|
||||||
|
}
|
||||||
|
|
||||||
RiuCreateMultipleFractionsUi* parent = nullptr;
|
RiuCreateMultipleFractionsUi* parent = nullptr;
|
||||||
this->firstAncestorOrThisOfType(parent);
|
this->firstAncestorOrThisOfType(parent);
|
||||||
if (parent)
|
if (parent)
|
||||||
{
|
{
|
||||||
|
parent->updateButtonsEnableState();
|
||||||
parent->updateConnectedEditors();
|
parent->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "cafPdmUiTableViewEditor.h"
|
#include "cafPdmUiTableViewEditor.h"
|
||||||
#include "cafPdmUiTextEditor.h"
|
#include "cafPdmUiTextEditor.h"
|
||||||
#include "cafSelectionManagerTools.h"
|
#include "cafSelectionManagerTools.h"
|
||||||
|
#include "cafPdmUiPropertyViewDialog.h"
|
||||||
|
|
||||||
#include "cvfBoundingBox.h"
|
#include "cvfBoundingBox.h"
|
||||||
|
|
||||||
@ -66,6 +67,12 @@ RicCreateMultipleFracturesOptionItemUi* firstUiOptionContainingK(size_t k,
|
|||||||
const std::vector<RicCreateMultipleFracturesOptionItemUi*>& allUiOptions);
|
const std::vector<RicCreateMultipleFracturesOptionItemUi*>& allUiOptions);
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
const QString RiuCreateMultipleFractionsUi::ADD_FRACTURES_BUTTON_TEXT = "Add Fractures";
|
||||||
|
const QString RiuCreateMultipleFractionsUi::REPLACE_FRACTURES_BUTTON_TEXT = "Replace Fractures";
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -87,6 +94,14 @@ RiuCreateMultipleFractionsUi::RiuCreateMultipleFractionsUi()
|
|||||||
m_fractureCreationSummary.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
m_fractureCreationSummary.uiCapability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiuCreateMultipleFractionsUi::setParentDialog(QPointer<caf::PdmUiPropertyViewDialog> dialog)
|
||||||
|
{
|
||||||
|
m_dialog = dialog;
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
@ -117,13 +132,13 @@ std::vector<RicCreateMultipleFracturesOptionItemUi*> RiuCreateMultipleFractionsU
|
|||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
///
|
///
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
void RiuCreateMultipleFractionsUi::insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertBeforeThisObject,
|
void RiuCreateMultipleFractionsUi::insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertAfterThisObject,
|
||||||
RicCreateMultipleFracturesOptionItemUi* objectToInsert)
|
RicCreateMultipleFracturesOptionItemUi* objectToInsert)
|
||||||
{
|
{
|
||||||
size_t index = m_options.index(insertBeforeThisObject);
|
size_t index = m_options.index(insertAfterThisObject);
|
||||||
if (index < m_options.size())
|
if (index < m_options.size() - 1)
|
||||||
{
|
{
|
||||||
m_options.insert(index, objectToInsert);
|
m_options.insert(index + 1, objectToInsert);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -350,6 +365,41 @@ std::vector<LocationForNewFracture> RiuCreateMultipleFractionsUi::locationsForNe
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
void RiuCreateMultipleFractionsUi::updateButtonsEnableState()
|
||||||
|
{
|
||||||
|
if (m_dialog)
|
||||||
|
{
|
||||||
|
bool hasOverlappingK = false;
|
||||||
|
const auto& opts = options();
|
||||||
|
for (int i = 0; i < opts.size(); i++)
|
||||||
|
{
|
||||||
|
for (int j = i + 1; j < opts.size(); j++)
|
||||||
|
{
|
||||||
|
int absMin = std::min(opts[i]->topKLayer(), opts[j]->topKLayer());
|
||||||
|
int absMax = std::max(opts[i]->baseKLayer(), opts[j]->baseKLayer());
|
||||||
|
int leni = opts[i]->baseKLayer() - opts[i]->topKLayer() + 1;
|
||||||
|
int lenj = opts[j]->baseKLayer() - opts[j]->topKLayer() + 1;
|
||||||
|
if (absMax - absMin + 1 < leni + lenj)
|
||||||
|
{
|
||||||
|
hasOverlappingK = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for (auto button : m_dialog->dialogButtonBox()->buttons())
|
||||||
|
{
|
||||||
|
if (button->text() == ADD_FRACTURES_BUTTON_TEXT || button->text() == REPLACE_FRACTURES_BUTTON_TEXT)
|
||||||
|
{
|
||||||
|
button->setEnabled(!hasOverlappingK);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
/// Internal definitions
|
/// Internal definitions
|
||||||
//--------------------------------------------------------------------------------------------------
|
//--------------------------------------------------------------------------------------------------
|
||||||
|
@ -20,6 +20,8 @@
|
|||||||
|
|
||||||
#include "RicCreateMultipleFracturesOptionItemUi.h"
|
#include "RicCreateMultipleFracturesOptionItemUi.h"
|
||||||
|
|
||||||
|
#include <QPointer>
|
||||||
|
|
||||||
#include "cafPdmChildArrayField.h"
|
#include "cafPdmChildArrayField.h"
|
||||||
#include "cafPdmField.h"
|
#include "cafPdmField.h"
|
||||||
#include "cafPdmObject.h"
|
#include "cafPdmObject.h"
|
||||||
@ -29,6 +31,11 @@ class RimEclipseCase;
|
|||||||
class RimWellPath;
|
class RimWellPath;
|
||||||
class RigMainGrid;
|
class RigMainGrid;
|
||||||
|
|
||||||
|
namespace caf
|
||||||
|
{
|
||||||
|
class PdmUiPropertyViewDialog;
|
||||||
|
}
|
||||||
|
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
///
|
///
|
||||||
//==================================================================================================
|
//==================================================================================================
|
||||||
@ -60,14 +67,18 @@ class RiuCreateMultipleFractionsUi : public caf::PdmObject
|
|||||||
CAF_PDM_HEADER_INIT;
|
CAF_PDM_HEADER_INIT;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
static const QString ADD_FRACTURES_BUTTON_TEXT;
|
||||||
|
static const QString REPLACE_FRACTURES_BUTTON_TEXT;
|
||||||
|
|
||||||
RiuCreateMultipleFractionsUi();
|
RiuCreateMultipleFractionsUi();
|
||||||
|
|
||||||
|
void setParentDialog(QPointer<caf::PdmUiPropertyViewDialog> dialog);
|
||||||
void setValues(RimEclipseCase* eclipseCase, double minimumDistanceFromWellTip, int maxFracturesPerWell);
|
void setValues(RimEclipseCase* eclipseCase, double minimumDistanceFromWellTip, int maxFracturesPerWell);
|
||||||
void resetValues();
|
void resetValues();
|
||||||
|
|
||||||
std::vector<RicCreateMultipleFracturesOptionItemUi*> options() const;
|
std::vector<RicCreateMultipleFracturesOptionItemUi*> options() const;
|
||||||
|
|
||||||
void insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertBeforeThisObject,
|
void insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertAfterThisObject,
|
||||||
RicCreateMultipleFracturesOptionItemUi* objectToInsert);
|
RicCreateMultipleFracturesOptionItemUi* objectToInsert);
|
||||||
|
|
||||||
void deleteOptionItem(RicCreateMultipleFracturesOptionItemUi* optionsItem);
|
void deleteOptionItem(RicCreateMultipleFracturesOptionItemUi* optionsItem);
|
||||||
@ -80,6 +91,8 @@ public:
|
|||||||
|
|
||||||
std::vector<LocationForNewFracture> locationsForNewFractures() const;
|
std::vector<LocationForNewFracture> locationsForNewFractures() const;
|
||||||
|
|
||||||
|
void updateButtonsEnableState();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
|
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
|
||||||
bool* useOptionsOnly) override;
|
bool* useOptionsOnly) override;
|
||||||
@ -100,4 +113,6 @@ private:
|
|||||||
caf::PdmProxyValueField<QString> m_fractureCreationSummary;
|
caf::PdmProxyValueField<QString> m_fractureCreationSummary;
|
||||||
|
|
||||||
std::vector<RimWellPath*> m_wellPaths;
|
std::vector<RimWellPath*> m_wellPaths;
|
||||||
|
|
||||||
|
QPointer<caf::PdmUiPropertyViewDialog> m_dialog;
|
||||||
};
|
};
|
||||||
|
@ -76,14 +76,16 @@ void RicNewOptionItemFeature::onActionTriggered(bool isChecked)
|
|||||||
if (multipleFractionUi)
|
if (multipleFractionUi)
|
||||||
{
|
{
|
||||||
auto newItem = new RicCreateMultipleFracturesOptionItemUi();
|
auto newItem = new RicCreateMultipleFracturesOptionItemUi();
|
||||||
|
|
||||||
if (selectedOptionItem)
|
if (selectedOptionItem)
|
||||||
{
|
{
|
||||||
newItem->setValues(selectedOptionItem->topKLayer(),
|
newItem->setValues(selectedOptionItem->baseKLayer() + 1,
|
||||||
selectedOptionItem->baseKLayer(),
|
selectedOptionItem->baseKLayer() + 1,
|
||||||
selectedOptionItem->fractureTemplate(),
|
selectedOptionItem->fractureTemplate(),
|
||||||
selectedOptionItem->minimumSpacing());
|
selectedOptionItem->minimumSpacing());
|
||||||
}
|
}
|
||||||
multipleFractionUi->insertOptionItem(selectedOptionItem, newItem);
|
multipleFractionUi->insertOptionItem(selectedOptionItem, newItem);
|
||||||
|
multipleFractionUi->updateButtonsEnableState();
|
||||||
multipleFractionUi->updateConnectedEditors();
|
multipleFractionUi->updateConnectedEditors();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user