#4260 Support changing IJK bounding box in sector model and remodel UI

This commit is contained in:
Gaute Lindkvist 2019-04-01 16:21:43 +02:00
parent e2278493ad
commit 209146ebae
17 changed files with 308 additions and 93 deletions

View File

@ -110,5 +110,5 @@ private:
caf::PdmField<bool> m_showTestToolbar; caf::PdmField<bool> m_showTestToolbar;
caf::PdmField<bool> m_includeFractureDebugInfoFile; caf::PdmField<bool> m_includeFractureDebugInfoFile;
caf::PdmField<QString> m_holoLensExportFolder; caf::PdmField<QString> m_holoLensExportFolder;
QStringList m_tabNames; QStringList m_tabNames;
}; };

View File

@ -98,7 +98,13 @@ void RicfExportVisibleCells::execute()
RiaViewRedrawScheduler::instance()->clearViewsScheduledForUpdate(); RiaViewRedrawScheduler::instance()->clearViewsScheduledForUpdate();
RicExportEclipseSectorModelUi exportSettings(eclipseView->eclipseCase()->eclipseCaseData()); cvf::UByteArray cellVisibility;
eclipseView->calculateCurrentTotalCellVisibility(&cellVisibility, eclipseView->currentTimeStep());
cvf::Vec3i min, max;
std::tie(min, max) = RicExportEclipseSectorModelFeature::getVisibleCellRange(eclipseView, cellVisibility);
RicExportEclipseSectorModelUi exportSettings(eclipseView->eclipseCase()->eclipseCaseData(), min, max);
buildExportSettings(exportFolder, &exportSettings); buildExportSettings(exportFolder, &exportSettings);
RicExportEclipseSectorModelFeature::executeCommand(eclipseView, exportSettings, "exportVisibleCells"); RicExportEclipseSectorModelFeature::executeCommand(eclipseView, exportSettings, "exportVisibleCells");
} }

View File

@ -93,7 +93,7 @@ void RicExportCompletionsWellSegmentsFeature::onActionTriggered(bool isChecked)
exportSettings.folder = defaultDir; exportSettings.folder = defaultDir;
caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export Well Segments", ""); caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export Well Segments", "");
RicExportFeatureImpl::configureForExport(&propertyDialog); RicExportFeatureImpl::configureForExport(propertyDialog.dialogButtonBox());
if (propertyDialog.exec() == QDialog::Accepted) if (propertyDialog.exec() == QDialog::Accepted)
{ {

View File

@ -129,7 +129,7 @@ void RicWellPathExportCompletionDataFeature::prepareExportSettingsAndExportCompl
} }
caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), exportSettings, dialogTitle, ""); caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), exportSettings, dialogTitle, "");
RicExportFeatureImpl::configureForExport(&propertyDialog); RicExportFeatureImpl::configureForExport(propertyDialog.dialogButtonBox());
if (propertyDialog.exec() == QDialog::Accepted) if (propertyDialog.exec() == QDialog::Accepted)
{ {

View File

@ -68,7 +68,7 @@ void RicExportCarfin::onActionTriggered(bool isChecked)
exportCarfinObject->setCase(rimCase); exportCarfinObject->setCase(rimCase);
caf::PdmUiPropertyViewDialog propertyDialog(nullptr, exportCarfinObject, "Export CARFIN to Eclipse Data", ""); caf::PdmUiPropertyViewDialog propertyDialog(nullptr, exportCarfinObject, "Export CARFIN to Eclipse Data", "");
RicExportFeatureImpl::configureForExport(&propertyDialog); RicExportFeatureImpl::configureForExport(propertyDialog.dialogButtonBox());
if (propertyDialog.exec() == QDialog::Accepted) if (propertyDialog.exec() == QDialog::Accepted)
{ {

View File

@ -38,6 +38,7 @@
#include "RigMainGrid.h" #include "RigMainGrid.h"
#include "Riu3DMainWindowTools.h" #include "Riu3DMainWindowTools.h"
#include "RiuPropertyViewTabWidget.h"
#include "cafPdmUiPropertyViewDialog.h" #include "cafPdmUiPropertyViewDialog.h"
#include "cafProgressInfo.h" #include "cafProgressInfo.h"
@ -58,9 +59,16 @@ void RicExportEclipseSectorModelFeature::openDialogAndExecuteCommand(RimEclipseV
RigEclipseCaseData* caseData = view->eclipseCase()->eclipseCaseData(); RigEclipseCaseData* caseData = view->eclipseCase()->eclipseCaseData();
RicExportEclipseSectorModelUi exportSettings(caseData); cvf::UByteArray cellVisibility;
caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export Eclipse Sector Model", ""); view->calculateCurrentTotalCellVisibility(&cellVisibility, view->currentTimeStep());
RicExportFeatureImpl::configureForExport(&propertyDialog);
cvf::Vec3i min, max;
std::tie(min, max) = getVisibleCellRange(view, cellVisibility);
RicExportEclipseSectorModelUi exportSettings(caseData, min, max);
RiuPropertyViewTabWidget propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export Eclipse Sector Model", exportSettings.tabNames());
RicExportFeatureImpl::configureForExport(propertyDialog.dialogButtonBox());
if (propertyDialog.exec() == QDialog::Accepted) if (propertyDialog.exec() == QDialog::Accepted)
{ {
@ -84,15 +92,17 @@ void RicExportEclipseSectorModelFeature::executeCommand(RimEclipseView* view,
caf::ProgressInfo progress(gridProgressPercentage + resultProgressPercentage + faultsProgressPercentage, caf::ProgressInfo progress(gridProgressPercentage + resultProgressPercentage + faultsProgressPercentage,
"Export Eclipse Sector Model"); "Export Eclipse Sector Model");
cvf::Vec3st refinement(exportSettings.cellCountI(), exportSettings.cellCountJ(), exportSettings.cellCountK()); cvf::Vec3st refinement(exportSettings.refinementCountI(), exportSettings.refinementCountJ(), exportSettings.refinementCountK());
CVF_ASSERT(refinement.x() > 0u && refinement.y() > 0u && refinement.z() > 0u); CVF_ASSERT(refinement.x() > 0u && refinement.y() > 0u && refinement.z() > 0u);
cvf::UByteArray cellVisibility; cvf::UByteArray cellVisibility;
view->calculateCurrentTotalCellVisibility(&cellVisibility, view->currentTimeStep()); view->calculateCurrentTotalCellVisibility(&cellVisibility, view->currentTimeStep());
getVisibleCellRange(view, cellVisibility);
cvf::Vec3st min(exportSettings.min());
cvf::Vec3st max(exportSettings.max());
cvf::Vec3st min, max;
std::tie(min, max) = getVisibleCellRange(view, cellVisibility);
if (exportSettings.exportGrid()) if (exportSettings.exportGrid())
{ {
const cvf::UByteArray* cellVisibilityForActnum = exportSettings.makeInvisibleCellsInactive() ? &cellVisibility : nullptr; const cvf::UByteArray* cellVisibilityForActnum = exportSettings.makeInvisibleCellsInactive() ? &cellVisibility : nullptr;
@ -215,14 +225,14 @@ void RicExportEclipseSectorModelFeature::executeCommand(RimEclipseView* view,
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::pair<cvf::Vec3st, cvf::Vec3st> RicExportEclipseSectorModelFeature::getVisibleCellRange(RimEclipseView* view, const cvf::UByteArray& cellVisibillity) std::pair<cvf::Vec3i, cvf::Vec3i> RicExportEclipseSectorModelFeature::getVisibleCellRange(RimEclipseView* view, const cvf::UByteArray& cellVisibillity)
{ {
const RigMainGrid* mainGrid = view->eclipseCase()->mainGrid(); const RigMainGrid* mainGrid = view->eclipseCase()->mainGrid();
cvf::Vec3st max = cvf::Vec3st::ZERO; cvf::Vec3i max = cvf::Vec3i::ZERO;
cvf::Vec3st min = cvf::Vec3st(mainGrid->cellCountI() - 1, cvf::Vec3i min = cvf::Vec3i(int(mainGrid->cellCountI() - 1),
mainGrid->cellCountJ() - 1, int(mainGrid->cellCountJ() - 1),
mainGrid->cellCountK() - 1); int(mainGrid->cellCountK() - 1));
size_t cellCount = mainGrid->cellCount(); size_t cellCount = mainGrid->cellCount();
for (size_t index = 0; index < cellCount; ++index) for (size_t index = 0; index < cellCount; ++index)
@ -233,8 +243,8 @@ std::pair<cvf::Vec3st, cvf::Vec3st> RicExportEclipseSectorModelFeature::getVisib
mainGrid->ijkFromCellIndex(index, &ijk[0], &ijk[1], &ijk[2]); mainGrid->ijkFromCellIndex(index, &ijk[0], &ijk[1], &ijk[2]);
for (int n = 0; n < 3; ++n) for (int n = 0; n < 3; ++n)
{ {
min[n] = std::min(min[n], ijk[n]); min[n] = std::min(min[n], (int) ijk[n]);
max[n] = std::max(max[n], ijk[n]); max[n] = std::max(max[n], (int) ijk[n]);
} }
} }
} }
@ -263,7 +273,7 @@ void RicExportEclipseSectorModelFeature::onActionTriggered(bool isChecked)
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicExportEclipseSectorModelFeature::setupActionLook(QAction* actionToSetup) void RicExportEclipseSectorModelFeature::setupActionLook(QAction* actionToSetup)
{ {
actionToSetup->setText("Export Visible Cells as Eclipse Sector Model"); actionToSetup->setText("Export Eclipse Sector Model");
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------

View File

@ -39,7 +39,7 @@ public :
const RicExportEclipseSectorModelUi& exportSettings, const RicExportEclipseSectorModelUi& exportSettings,
const QString& logPrefix); const QString& logPrefix);
static std::pair<cvf::Vec3st, cvf::Vec3st> getVisibleCellRange(RimEclipseView* view, const cvf::UByteArray& cellVisibility); static std::pair<cvf::Vec3i, cvf::Vec3i> getVisibleCellRange(RimEclipseView* view, const cvf::UByteArray& cellVisibility);
protected: protected:
bool isCommandEnabled() override; bool isCommandEnabled() override;
void onActionTriggered(bool isChecked) override; void onActionTriggered(bool isChecked) override;

View File

@ -19,8 +19,10 @@
#include "RicExportEclipseSectorModelUi.h" #include "RicExportEclipseSectorModelUi.h"
#include "RiaApplication.h" #include "RiaApplication.h"
#include "RigActiveCellInfo.h"
#include "RigCaseCellResultsData.h" #include "RigCaseCellResultsData.h"
#include "RigEclipseCaseData.h" #include "RigEclipseCaseData.h"
#include "RigMainGrid.h"
#include "RimEclipseResultDefinition.h" #include "RimEclipseResultDefinition.h"
@ -46,18 +48,33 @@ void RicExportEclipseSectorModelUi::ResultExportOptionsEnum::setUp()
addItem(RicExportEclipseSectorModelUi::EXPORT_NO_RESULTS, "NO_RESULTS", "Do not export"); addItem(RicExportEclipseSectorModelUi::EXPORT_NO_RESULTS, "NO_RESULTS", "Do not export");
addItem(RicExportEclipseSectorModelUi::EXPORT_TO_GRID_FILE, "TO_GRID_FILE", "Append to grid file"); addItem(RicExportEclipseSectorModelUi::EXPORT_TO_GRID_FILE, "TO_GRID_FILE", "Append to grid file");
addItem(RicExportEclipseSectorModelUi::EXPORT_TO_SINGLE_SEPARATE_FILE, "TO_SINGLE_RESULT_FILE", "Export to single file"); addItem(RicExportEclipseSectorModelUi::EXPORT_TO_SINGLE_SEPARATE_FILE, "TO_SINGLE_RESULT_FILE", "Export to single file");
addItem(RicExportEclipseSectorModelUi::EXPORT_TO_SEPARATE_FILE_PER_RESULT, "TO_SEPARATE_RESULT_FILES", "Export to a separate file per property"); addItem(RicExportEclipseSectorModelUi::EXPORT_TO_SEPARATE_FILE_PER_RESULT, "TO_SEPARATE_RESULT_FILES", "Export to a separate file per parameter");
setDefault(RicExportEclipseSectorModelUi::EXPORT_TO_SEPARATE_FILE_PER_RESULT); setDefault(RicExportEclipseSectorModelUi::EXPORT_TO_SEPARATE_FILE_PER_RESULT);
} }
template<>
void RicExportEclipseSectorModelUi::GridBoxSelectionEnum::setUp()
{
addItem(RicExportEclipseSectorModelUi::VISIBLE_CELLS_BOX, "VISIBLE_CELLS", "Box Containing all Visible Cells");
addItem(RicExportEclipseSectorModelUi::ACTIVE_CELLS_BOX, "ACTIVE_CELLS", "Box Containing all Active Cells");
addItem(RicExportEclipseSectorModelUi::FULL_GRID_BOX, "FULL_GRID", "Full Grid");
addItem(RicExportEclipseSectorModelUi::MANUAL_SELECTION, "MANUAL_SELECTION", "Manual Selection");
setDefault(RicExportEclipseSectorModelUi::VISIBLE_CELLS_BOX);
}
} // namespace caf } // namespace caf
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
RicExportEclipseSectorModelUi::RicExportEclipseSectorModelUi(RigEclipseCaseData* caseData) RicExportEclipseSectorModelUi::RicExportEclipseSectorModelUi(RigEclipseCaseData* caseData /*= nullptr*/,
const cvf::Vec3i& visibleMin /*= cvf::Vec3i::ZERO*/,
const cvf::Vec3i& visibleMax /*= cvf::Vec3i::ZERO*/)
: m_caseData(caseData) : m_caseData(caseData)
, m_visibleMin(visibleMin)
, m_visibleMax(visibleMax)
{ {
CAF_PDM_InitObject("Export Visible Cells as Eclipse Input Grid", "", "", ""); CAF_PDM_InitObject("Export Visible Cells as Eclipse Input Grid", "", "", "");
@ -67,22 +84,37 @@ RicExportEclipseSectorModelUi::RicExportEclipseSectorModelUi(RigEclipseCaseData*
CAF_PDM_InitField(&exportInLocalCoordinates, "ExportInLocalCoords", false, "Export in Local Coordinates", "", "Remove UTM location on export", ""); CAF_PDM_InitField(&exportInLocalCoordinates, "ExportInLocalCoords", false, "Export in Local Coordinates", "", "Remove UTM location on export", "");
CAF_PDM_InitField(&makeInvisibleCellsInactive, "InvisibleCellActnum", false, "Make Invisible Cells Inactive", "", "", ""); CAF_PDM_InitField(&makeInvisibleCellsInactive, "InvisibleCellActnum", false, "Make Invisible Cells Inactive", "", "", "");
CAF_PDM_InitFieldNoDefault(&exportGridBox, "GridBoxSelection", "Cells to Export", "", "", "");
QString minIJKLabel = "Min I, J, K";
CAF_PDM_InitField(&minI, "MinI", m_visibleMin.x() + 1, minIJKLabel, "", "", "");
CAF_PDM_InitField(&minJ, "MinJ", m_visibleMin.y() + 1, "", "", "", "");
minJ.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
CAF_PDM_InitField(&minK, "MinK", m_visibleMin.z() + 1, "", "", "", "");
minK.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
QString maxIJKLabel = "Max I, J, K";
CAF_PDM_InitField(&maxI, "MaxI", m_visibleMax.x() + 1, maxIJKLabel, "", "", "");
CAF_PDM_InitField(&maxJ, "MaxJ", m_visibleMax.y() + 1, "", "", "", "");
maxJ.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
CAF_PDM_InitField(&maxK, "MaxK", m_visibleMax.z() + 1, "", "", "", "");
maxK.uiCapability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
CAF_PDM_InitFieldNoDefault(&exportFaults, "ExportFaults", "Export Fault Data", "", "", ""); CAF_PDM_InitFieldNoDefault(&exportFaults, "ExportFaults", "Export Fault Data", "", "", "");
exportFaults = EXPORT_TO_SINGLE_SEPARATE_FILE; exportFaults = EXPORT_TO_SINGLE_SEPARATE_FILE;
CAF_PDM_InitField(&exportFaultsFilename, "ExportFaultsFilename", QString(), "Faults File Name", "", "", ""); CAF_PDM_InitField(&exportFaultsFilename, "ExportFaultsFilename", QString(), "Faults File Name", "", "", "");
exportFaultsFilename.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); exportFaultsFilename.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
CAF_PDM_InitFieldNoDefault(&exportParameters, "ExportResults", "Export Properties", "", "", ""); QString ijkLabel = "Cell Count I, J, K";
CAF_PDM_InitField(&exportParametersFilename, "ExportResultsFilename", QString(), "Properties File Name", "", "", ""); CAF_PDM_InitField(&refinementCountI, "RefinementCountI", 1, ijkLabel, "", "", "");
CAF_PDM_InitField(&refinementCountJ, "RefinementCountJ", 1, "", "", "", "");
CAF_PDM_InitField(&refinementCountK, "RefinementCountK", 1, "", "", "", "");
CAF_PDM_InitFieldNoDefault(&exportParameters, "ExportParams", "Export Parameters", "", "", "");
CAF_PDM_InitField(&exportParametersFilename, "ExportParamsFilename", QString(), "File Name", "", "", "");
exportParametersFilename.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); exportParametersFilename.uiCapability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
CAF_PDM_InitFieldNoDefault(&selectedKeywords, "ExportMainKeywords", "Main Keywords", "", "", ""); CAF_PDM_InitFieldNoDefault(&selectedKeywords, "ExportMainKeywords", "Keywords to Export", "", "", "");
QString ijkLabel = "Cell Count I, J, K";
CAF_PDM_InitField(&cellCountI, "CellCountI", 1, ijkLabel, "", "", "");
CAF_PDM_InitField(&cellCountJ, "CellCountJ", 1, "", "", "", "");
CAF_PDM_InitField(&cellCountK, "CellCountK", 1, "", "", "", "");
exportGridFilename = defaultGridFileName(); exportGridFilename = defaultGridFileName();
exportParametersFilename = defaultResultsFileName(); exportParametersFilename = defaultResultsFileName();
@ -95,6 +127,8 @@ RicExportEclipseSectorModelUi::RicExportEclipseSectorModelUi(RigEclipseCaseData*
selectedKeywords.v().push_back(keyword); selectedKeywords.v().push_back(keyword);
} }
} }
m_tabNames << "Grid Data";
m_tabNames << "Parameters";
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -104,11 +138,58 @@ RicExportEclipseSectorModelUi::~RicExportEclipseSectorModelUi()
{ {
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
const QStringList& RicExportEclipseSectorModelUi::tabNames() const
{
return m_tabNames;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::Vec3i RicExportEclipseSectorModelUi::min() const
{
return cvf::Vec3i(minI() - 1, minJ() - 1, minK() - 1);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
cvf::Vec3i RicExportEclipseSectorModelUi::max() const
{
return cvf::Vec3i(maxI() - 1, maxJ() - 1, maxK() - 1);
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicExportEclipseSectorModelUi::setMin(const cvf::Vec3i& min)
{
minI = min.x() + 1; minJ = min.y() + 1; minK = min.z() + 1;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void RicExportEclipseSectorModelUi::setMax(const cvf::Vec3i& max)
{
maxI = max.x() + 1; maxJ = max.y() + 1; maxK = max.z() + 1;
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicExportEclipseSectorModelUi::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute) void RicExportEclipseSectorModelUi::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute * attribute)
{ {
if (!m_caseData) return;
const RigMainGrid* mainGrid = m_caseData->mainGrid();
cvf::Vec3i gridDimensions(int(mainGrid->cellCountI()), int(mainGrid->cellCountJ()), int(mainGrid->cellCountK()));
caf::PdmUiLineEditorAttribute* lineEditorAttr = dynamic_cast<caf::PdmUiLineEditorAttribute*>(attribute);
if (field == &exportParametersFilename || field == &exportGridFilename || field == &exportFaultsFilename) if (field == &exportParametersFilename || field == &exportGridFilename || field == &exportFaultsFilename)
{ {
caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast<caf::PdmUiFilePathEditorAttribute*>(attribute); caf::PdmUiFilePathEditorAttribute* myAttr = dynamic_cast<caf::PdmUiFilePathEditorAttribute*>(attribute);
@ -125,13 +206,33 @@ void RicExportEclipseSectorModelUi::defineEditorAttribute(const caf::PdmFieldHan
myAttr->m_heightHint = 280; myAttr->m_heightHint = 280;
} }
} }
else if (field == &cellCountI || field == &cellCountJ || field == &cellCountK) else if (field == &refinementCountI || field == &refinementCountJ || field == &refinementCountK)
{ {
caf::PdmUiLineEditorAttribute* myAttr = dynamic_cast<caf::PdmUiLineEditorAttribute*>(attribute); if (lineEditorAttr)
if (myAttr)
{ {
QIntValidator* validator = new QIntValidator(1, 10, nullptr); QIntValidator* validator = new QIntValidator(1, 10, nullptr);
myAttr->validator = validator; lineEditorAttr->validator = validator;
}
}
else if (field == &minI || field == &maxI)
{
if (lineEditorAttr)
{
lineEditorAttr->validator = new QIntValidator(1, (int)gridDimensions.x(), nullptr);
}
}
else if (field == &minJ || field == &maxJ)
{
if (lineEditorAttr)
{
lineEditorAttr->validator = new QIntValidator(1, (int)gridDimensions.y(), nullptr);
}
}
else if (field == &minK || field == &maxK)
{
if (lineEditorAttr)
{
lineEditorAttr->validator = new QIntValidator(1, (int)gridDimensions.z(), nullptr);
} }
} }
} }
@ -141,48 +242,70 @@ void RicExportEclipseSectorModelUi::defineEditorAttribute(const caf::PdmFieldHan
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicExportEclipseSectorModelUi::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) void RicExportEclipseSectorModelUi::defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering)
{ {
caf::PdmUiGroup* gridGroup = uiOrdering.addNewGroup("Grid Export"); if (uiConfigName == m_tabNames[0])
gridGroup->add(&exportGrid);
gridGroup->add(&exportGridFilename);
exportGridFilename.uiCapability()->setUiReadOnly(!exportGrid());
gridGroup->add(&exportInLocalCoordinates);
exportInLocalCoordinates.uiCapability()->setUiReadOnly(!exportGrid());
gridGroup->add(&makeInvisibleCellsInactive);
makeInvisibleCellsInactive.uiCapability()->setUiReadOnly(!exportGrid());
gridGroup->add(&exportFaults);
if (exportFaults() != EXPORT_NO_RESULTS)
{ {
if (exportFaults() == EXPORT_TO_SINGLE_SEPARATE_FILE) caf::PdmUiGroup* gridGroup = uiOrdering.addNewGroup("Grid Export");
gridGroup->add(&exportGrid);
gridGroup->add(&exportGridFilename);
exportGridFilename.uiCapability()->setUiReadOnly(!exportGrid());
gridGroup->add(&exportInLocalCoordinates);
exportInLocalCoordinates.uiCapability()->setUiReadOnly(!exportGrid());
gridGroup->add(&makeInvisibleCellsInactive);
caf::PdmUiGroup* gridBoxGroup = uiOrdering.addNewGroup("Grid Box Selection");
gridBoxGroup->add(&exportGridBox, { true, 4, 1 });
gridBoxGroup->add(&minI, { true, 2, 1 });
gridBoxGroup->add(&minJ, false);
gridBoxGroup->add(&minK, false);
gridBoxGroup->add(&maxI, { true, 2, 1 });
gridBoxGroup->add(&maxJ, false);
gridBoxGroup->add(&maxK, false);
minI.uiCapability()->setUiReadOnly(exportGridBox() != MANUAL_SELECTION);
minJ.uiCapability()->setUiReadOnly(exportGridBox() != MANUAL_SELECTION);
minK.uiCapability()->setUiReadOnly(exportGridBox() != MANUAL_SELECTION);
maxI.uiCapability()->setUiReadOnly(exportGridBox() != MANUAL_SELECTION);
maxJ.uiCapability()->setUiReadOnly(exportGridBox() != MANUAL_SELECTION);
maxK.uiCapability()->setUiReadOnly(exportGridBox() != MANUAL_SELECTION);
caf::PdmUiGroup* gridRefinement = uiOrdering.addNewGroup("Grid Refinement");
gridRefinement->add(&refinementCountI, {true, 2, 1});
gridRefinement->add(&refinementCountJ, {false});
gridRefinement->add(&refinementCountK, {false});
refinementCountI.uiCapability()->setUiReadOnly(!exportGrid());
refinementCountJ.uiCapability()->setUiReadOnly(!exportGrid());
refinementCountK.uiCapability()->setUiReadOnly(!exportGrid());
caf::PdmUiGroup* faultsGroup = uiOrdering.addNewGroup("Faults");
faultsGroup->add(&exportFaults);
if (exportFaults() != EXPORT_NO_RESULTS)
{ {
gridGroup->add(&exportFaultsFilename); if (exportFaults() == EXPORT_TO_SINGLE_SEPARATE_FILE)
{
faultsGroup->add(&exportFaultsFilename);
}
} }
} }
else if (uiConfigName == m_tabNames[1])
caf::PdmUiGroup* gridRefinement = gridGroup->addNewGroup("Grid Refinement");
gridRefinement->add(&cellCountI, {true, 2, 1});
gridRefinement->add(&cellCountJ, {false});
gridRefinement->add(&cellCountK, {false});
cellCountI.uiCapability()->setUiReadOnly(!exportGrid());
cellCountJ.uiCapability()->setUiReadOnly(!exportGrid());
cellCountK.uiCapability()->setUiReadOnly(!exportGrid());
caf::PdmUiGroup* resultsGroup = uiOrdering.addNewGroup("Property Export");
resultsGroup->add(&exportParameters);
if (exportParameters() != EXPORT_NO_RESULTS)
{ {
if (exportParameters() == EXPORT_TO_SINGLE_SEPARATE_FILE) caf::PdmUiGroup* resultsGroup = uiOrdering.addNewGroup("Parameter Export");
resultsGroup->add(&exportParameters);
if (exportParameters() != EXPORT_NO_RESULTS)
{ {
resultsGroup->add(&exportParametersFilename); if (exportParameters() == EXPORT_TO_SINGLE_SEPARATE_FILE)
{
resultsGroup->add(&exportParametersFilename);
}
}
if (exportParameters() != EXPORT_NO_RESULTS)
{
resultsGroup->add(&selectedKeywords);
} }
} }
if (exportParameters() != EXPORT_NO_RESULTS)
{
resultsGroup->add(&selectedKeywords);
}
uiOrdering.skipRemainingFields(true); uiOrdering.skipRemainingFields(true);
} }
@ -191,7 +314,46 @@ void RicExportEclipseSectorModelUi::defineUiOrdering(QString uiConfigName, caf::
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicExportEclipseSectorModelUi::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) void RicExportEclipseSectorModelUi::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
{ {
if (changedField == &exportGridFilename) if (changedField == &exportGrid)
{
if (!exportGrid())
{
if (exportFaults() == EXPORT_TO_GRID_FILE)
{
exportFaults = EXPORT_TO_SINGLE_SEPARATE_FILE;
}
if (exportParameters() == EXPORT_TO_GRID_FILE)
{
exportParameters = EXPORT_TO_SEPARATE_FILE_PER_RESULT;
}
this->updateConnectedEditors();
}
}
else if (changedField == &exportGridBox)
{
if (exportGridBox == ACTIVE_CELLS_BOX)
{
cvf::Vec3st minActive, maxActive;
m_caseData->activeCellInfo(RiaDefines::MATRIX_MODEL)->IJKBoundingBox(minActive, maxActive);
setMin(cvf::Vec3i(minActive));
setMax(cvf::Vec3i(maxActive));
}
else if (exportGridBox == VISIBLE_CELLS_BOX)
{
setMin(m_visibleMin);
setMax(m_visibleMax);
}
else if (exportGridBox == FULL_GRID_BOX)
{
const RigMainGrid* mainGrid = m_caseData->mainGrid();
cvf::Vec3i gridDimensions(int(mainGrid->cellCountI() - 1), int(mainGrid->cellCountJ() - 1), int(mainGrid->cellCountK() - 1));
setMin(cvf::Vec3i(1, 1, 1));
setMax(gridDimensions);
}
this->updateConnectedEditors();
}
else if (changedField == &exportGridFilename)
{ {
QFileInfo info(exportGridFilename()); QFileInfo info(exportGridFilename());
QDir dirPath = info.absoluteDir(); QDir dirPath = info.absoluteDir();

View File

@ -18,10 +18,13 @@
#pragma once #pragma once
#include "cafAppEnum.h"
#include "cafPdmField.h" #include "cafPdmField.h"
#include "cafPdmObject.h" #include "cafPdmObject.h"
#include "cafPdmChildArrayField.h" #include "cafPdmChildArrayField.h"
#include "cafAppEnum.h"
#include "cvfBase.h"
#include "cvfVector3.h"
#include <QString> #include <QString>
#include <QStringList> #include <QStringList>
@ -47,9 +50,26 @@ class RicExportEclipseSectorModelUi : public caf::PdmObject
}; };
typedef caf::AppEnum<ResultExportOptions> ResultExportOptionsEnum; typedef caf::AppEnum<ResultExportOptions> ResultExportOptionsEnum;
enum GridBoxSelection
{
VISIBLE_CELLS_BOX,
ACTIVE_CELLS_BOX,
FULL_GRID_BOX,
MANUAL_SELECTION
};
typedef caf::AppEnum<GridBoxSelection> GridBoxSelectionEnum;
public: public:
RicExportEclipseSectorModelUi(RigEclipseCaseData* caseData = nullptr); RicExportEclipseSectorModelUi(RigEclipseCaseData* caseData = nullptr,
const cvf::Vec3i& visibleMin = cvf::Vec3i::ZERO,
const cvf::Vec3i& visibleMax = cvf::Vec3i::ZERO);
~RicExportEclipseSectorModelUi() override; ~RicExportEclipseSectorModelUi() override;
const QStringList& tabNames() const;
cvf::Vec3i min() const;
cvf::Vec3i max() const;
void setMin(const cvf::Vec3i& min);
void setMax(const cvf::Vec3i& max);
caf::PdmField<bool> exportGrid; caf::PdmField<bool> exportGrid;
caf::PdmField<QString> exportGridFilename; caf::PdmField<QString> exportGridFilename;
@ -64,11 +84,20 @@ public:
caf::PdmField<std::vector<QString>> selectedKeywords; caf::PdmField<std::vector<QString>> selectedKeywords;
caf::PdmField<int> cellCountI; caf::PdmField<GridBoxSelectionEnum> exportGridBox;
caf::PdmField<int> cellCountJ;
caf::PdmField<int> cellCountK; caf::PdmField<int> refinementCountI;
caf::PdmField<int> refinementCountJ;
caf::PdmField<int> refinementCountK;
protected: protected:
caf::PdmField<int> minI;
caf::PdmField<int> maxI;
caf::PdmField<int> minJ;
caf::PdmField<int> maxJ;
caf::PdmField<int> minK;
caf::PdmField<int> maxK;
void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override; void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override; void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
@ -80,6 +109,10 @@ protected:
QString defaultGridFileName() const; QString defaultGridFileName() const;
QString defaultResultsFileName() const; QString defaultResultsFileName() const;
QString defaultFaultsFileName() const; QString defaultFaultsFileName() const;
private: private:
RigEclipseCaseData* m_caseData; RigEclipseCaseData* m_caseData;
cvf::Vec3i m_visibleMin;
cvf::Vec3i m_visibleMax;
QStringList m_tabNames;
}; };

View File

@ -77,7 +77,7 @@ void RicExportToLasFileFeature::onActionTriggered(bool isChecked)
} }
caf::PdmUiPropertyViewDialog propertyDialog(nullptr, &featureUi, "Export Curve Data to LAS file(s)", "", QDialogButtonBox::Ok | QDialogButtonBox::Cancel); caf::PdmUiPropertyViewDialog propertyDialog(nullptr, &featureUi, "Export Curve Data to LAS file(s)", "", QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
RicExportFeatureImpl::configureForExport(&propertyDialog); RicExportFeatureImpl::configureForExport(propertyDialog.dialogButtonBox());
propertyDialog.resize(QSize(400, 330)); propertyDialog.resize(QSize(400, 330));
if (propertyDialog.exec() == QDialog::Accepted && if (propertyDialog.exec() == QDialog::Accepted &&

View File

@ -101,7 +101,7 @@ void RicSaveEclipseInputPropertyFeature::onActionTriggered(bool isChecked)
} }
caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export Eclipse Property to Text File", ""); caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export Eclipse Property to Text File", "");
RicExportFeatureImpl::configureForExport(&propertyDialog); RicExportFeatureImpl::configureForExport(propertyDialog.dialogButtonBox());
if (propertyDialog.exec() == QDialog::Accepted) if (propertyDialog.exec() == QDialog::Accepted)
{ {

View File

@ -53,7 +53,7 @@ void RicSaveEclipseInputVisibleCellsFeature::openDialogAndExecuteCommand(RimEcli
RicSaveEclipseInputVisibleCellsUi exportSettings; RicSaveEclipseInputVisibleCellsUi exportSettings;
caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export FLUXNUM/MULTNUM", ""); caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export FLUXNUM/MULTNUM", "");
RicExportFeatureImpl::configureForExport(&propertyDialog); RicExportFeatureImpl::configureForExport(propertyDialog.dialogButtonBox());
if (propertyDialog.exec() == QDialog::Accepted) if (propertyDialog.exec() == QDialog::Accepted)
{ {

View File

@ -91,7 +91,7 @@ void RicSaveEclipseResultAsInputPropertyExec::redo()
} }
caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export Binary Eclipse Data to Text File", ""); caf::PdmUiPropertyViewDialog propertyDialog(Riu3DMainWindowTools::mainWindowWidget(), &exportSettings, "Export Binary Eclipse Data to Text File", "");
RicExportFeatureImpl::configureForExport(&propertyDialog); RicExportFeatureImpl::configureForExport(propertyDialog.dialogButtonBox());
if (propertyDialog.exec() == QDialog::Accepted) if (propertyDialog.exec() == QDialog::Accepted)
{ {

View File

@ -18,17 +18,13 @@
#include "RicExportFeatureImpl.h" #include "RicExportFeatureImpl.h"
#include "cafPdmUiPropertyViewDialog.h"
#include <QDialogButtonBox> #include <QDialogButtonBox>
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void RicExportFeatureImpl::configureForExport(caf::PdmUiPropertyViewDialog* propertyViewDialog) void RicExportFeatureImpl::configureForExport(QDialogButtonBox* dialogButtonBox)
{ {
QDialogButtonBox* dialogButtonBox = propertyViewDialog->dialogButtonBox();
dialogButtonBox->clear(); dialogButtonBox->clear();
dialogButtonBox->addButton("Export", QDialogButtonBox::AcceptRole); dialogButtonBox->addButton("Export", QDialogButtonBox::AcceptRole);

View File

@ -18,9 +18,7 @@
#pragma once #pragma once
namespace caf { class QDialogButtonBox;
class PdmUiPropertyViewDialog;
}
//================================================================================================== //==================================================================================================
/// ///
@ -28,5 +26,5 @@ namespace caf {
class RicExportFeatureImpl class RicExportFeatureImpl
{ {
public: public:
static void configureForExport(caf::PdmUiPropertyViewDialog* propertyViewDialog); static void configureForExport(QDialogButtonBox* propertyViewDialog);
}; };

View File

@ -63,11 +63,11 @@ RiuPropertyViewTabWidget::RiuPropertyViewTabWidget(QWidget* parent, caf::PdmObje
dialogLayout->addWidget(tabWidget); dialogLayout->addWidget(tabWidget);
// Buttons // Buttons
QDialogButtonBox* buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel); m_dialogButtonBox = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
connect(buttonBox, SIGNAL(accepted()), this, SLOT(accept())); connect(m_dialogButtonBox, SIGNAL(accepted()), this, SLOT(accept()));
connect(buttonBox, SIGNAL(rejected()), this, SLOT(reject())); connect(m_dialogButtonBox, SIGNAL(rejected()), this, SLOT(reject()));
dialogLayout->addWidget(buttonBox); dialogLayout->addWidget(m_dialogButtonBox);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
@ -101,3 +101,11 @@ QSize RiuPropertyViewTabWidget::sizeHint() const
return maxSizeHint; return maxSizeHint;
} }
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QDialogButtonBox* RiuPropertyViewTabWidget::dialogButtonBox()
{
return m_dialogButtonBox;
}

View File

@ -26,6 +26,7 @@ namespace caf {
class PdmUiPropertyView; class PdmUiPropertyView;
} }
class QDialogButtonBox;
class QWidget; class QWidget;
class QString; class QString;
class QStringList; class QStringList;
@ -37,7 +38,8 @@ public:
~RiuPropertyViewTabWidget() override; ~RiuPropertyViewTabWidget() override;
QSize sizeHint() const override; QSize sizeHint() const override;
QDialogButtonBox* dialogButtonBox();
private: private:
std::vector<caf::PdmUiPropertyView*> m_pageWidgets; std::vector<caf::PdmUiPropertyView*> m_pageWidgets;
QDialogButtonBox* m_dialogButtonBox;
}; };