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");
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -231,6 +232,7 @@ void RicCreateMultipleFracturesFeature::onActionTriggered(bool isChecked)
|
||||
Riu3DMainWindowTools::mainWindowWidget(), multipleFractionsUi, "Create Multiple Fractures", "");
|
||||
|
||||
m_dialog = &propertyDialog;
|
||||
multipleFractionsUi->setParentDialog(m_dialog);
|
||||
|
||||
propertyDialog.resize(QSize(700, 450));
|
||||
|
||||
@ -239,7 +241,7 @@ void RicCreateMultipleFracturesFeature::onActionTriggered(bool isChecked)
|
||||
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()));
|
||||
pushButton->setDefault(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()));
|
||||
pushButton->setDefault(false);
|
||||
pushButton->setAutoDefault(false);
|
||||
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);
|
||||
connect(pushButton, SIGNAL(clicked()), this, SLOT(slotClose()));
|
||||
|
@ -105,10 +105,20 @@ void RicCreateMultipleFracturesOptionItemUi::fieldChangedByUi(const caf::PdmFiel
|
||||
const QVariant& oldValue,
|
||||
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;
|
||||
this->firstAncestorOrThisOfType(parent);
|
||||
if (parent)
|
||||
{
|
||||
parent->updateButtonsEnableState();
|
||||
parent->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
@ -35,6 +35,7 @@
|
||||
#include "cafPdmUiTableViewEditor.h"
|
||||
#include "cafPdmUiTextEditor.h"
|
||||
#include "cafSelectionManagerTools.h"
|
||||
#include "cafPdmUiPropertyViewDialog.h"
|
||||
|
||||
#include "cvfBoundingBox.h"
|
||||
|
||||
@ -66,6 +67,12 @@ RicCreateMultipleFracturesOptionItemUi* firstUiOptionContainingK(size_t k,
|
||||
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());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
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)
|
||||
{
|
||||
size_t index = m_options.index(insertBeforeThisObject);
|
||||
if (index < m_options.size())
|
||||
size_t index = m_options.index(insertAfterThisObject);
|
||||
if (index < m_options.size() - 1)
|
||||
{
|
||||
m_options.insert(index, objectToInsert);
|
||||
m_options.insert(index + 1, objectToInsert);
|
||||
}
|
||||
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
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
@ -20,6 +20,8 @@
|
||||
|
||||
#include "RicCreateMultipleFracturesOptionItemUi.h"
|
||||
|
||||
#include <QPointer>
|
||||
|
||||
#include "cafPdmChildArrayField.h"
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
@ -29,6 +31,11 @@ class RimEclipseCase;
|
||||
class RimWellPath;
|
||||
class RigMainGrid;
|
||||
|
||||
namespace caf
|
||||
{
|
||||
class PdmUiPropertyViewDialog;
|
||||
}
|
||||
|
||||
//==================================================================================================
|
||||
///
|
||||
//==================================================================================================
|
||||
@ -60,14 +67,18 @@ class RiuCreateMultipleFractionsUi : public caf::PdmObject
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
static const QString ADD_FRACTURES_BUTTON_TEXT;
|
||||
static const QString REPLACE_FRACTURES_BUTTON_TEXT;
|
||||
|
||||
RiuCreateMultipleFractionsUi();
|
||||
|
||||
void setParentDialog(QPointer<caf::PdmUiPropertyViewDialog> dialog);
|
||||
void setValues(RimEclipseCase* eclipseCase, double minimumDistanceFromWellTip, int maxFracturesPerWell);
|
||||
void resetValues();
|
||||
|
||||
std::vector<RicCreateMultipleFracturesOptionItemUi*> options() const;
|
||||
|
||||
void insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertBeforeThisObject,
|
||||
void insertOptionItem(RicCreateMultipleFracturesOptionItemUi* insertAfterThisObject,
|
||||
RicCreateMultipleFracturesOptionItemUi* objectToInsert);
|
||||
|
||||
void deleteOptionItem(RicCreateMultipleFracturesOptionItemUi* optionsItem);
|
||||
@ -80,6 +91,8 @@ public:
|
||||
|
||||
std::vector<LocationForNewFracture> locationsForNewFractures() const;
|
||||
|
||||
void updateButtonsEnableState();
|
||||
|
||||
private:
|
||||
virtual QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
|
||||
bool* useOptionsOnly) override;
|
||||
@ -100,4 +113,6 @@ private:
|
||||
caf::PdmProxyValueField<QString> m_fractureCreationSummary;
|
||||
|
||||
std::vector<RimWellPath*> m_wellPaths;
|
||||
|
||||
QPointer<caf::PdmUiPropertyViewDialog> m_dialog;
|
||||
};
|
||||
|
@ -76,14 +76,16 @@ void RicNewOptionItemFeature::onActionTriggered(bool isChecked)
|
||||
if (multipleFractionUi)
|
||||
{
|
||||
auto newItem = new RicCreateMultipleFracturesOptionItemUi();
|
||||
|
||||
if (selectedOptionItem)
|
||||
{
|
||||
newItem->setValues(selectedOptionItem->topKLayer(),
|
||||
selectedOptionItem->baseKLayer(),
|
||||
newItem->setValues(selectedOptionItem->baseKLayer() + 1,
|
||||
selectedOptionItem->baseKLayer() + 1,
|
||||
selectedOptionItem->fractureTemplate(),
|
||||
selectedOptionItem->minimumSpacing());
|
||||
}
|
||||
multipleFractionUi->insertOptionItem(selectedOptionItem, newItem);
|
||||
multipleFractionUi->updateButtonsEnableState();
|
||||
multipleFractionUi->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user