mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
#775 Short name for summary cases refurbished
This commit is contained in:
parent
0d7a1e8bd7
commit
ff6b198966
@ -17,6 +17,7 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "RimFileSummaryCase.h"
|
||||
#include "QFileInfo"
|
||||
|
||||
|
||||
//==================================================================================================
|
||||
@ -58,4 +59,12 @@ QString RimFileSummaryCase::summaryHeaderFilename() const
|
||||
return m_summaryHeaderFilename();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimFileSummaryCase::caseName() const
|
||||
{
|
||||
QFileInfo caseFileName(this->summaryHeaderFilename());
|
||||
|
||||
return caseFileName.completeBaseName();
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ public:
|
||||
|
||||
void setSummaryHeaderFilename(const QString& fileName);
|
||||
virtual QString summaryHeaderFilename() const override;
|
||||
virtual QString caseName() const override;
|
||||
|
||||
private:
|
||||
caf::PdmField<QString> m_summaryHeaderFilename;
|
||||
|
@ -36,16 +36,6 @@ CAF_PDM_SOURCE_INIT(RimGridSummaryCase,"GridSummaryCase");
|
||||
RimGridSummaryCase::RimGridSummaryCase()
|
||||
{
|
||||
CAF_PDM_InitFieldNoDefault(&m_eclipseCase, "Associated3DCase", "Main View", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_userName, "UserName", QString("User Name"), "Case Name", "", "", "");
|
||||
m_userName.xmlCapability()->setIOReadable(false);
|
||||
m_userName.xmlCapability()->setIOWritable(false);
|
||||
m_userName.uiCapability()->setUiReadOnly(true);
|
||||
|
||||
CAF_PDM_InitField(&m_summaryHeaderFilename, "SummaryHeaderFile", QString("Summary Header File"), "Summary File", "", "", "");
|
||||
m_summaryHeaderFilename.xmlCapability()->setIOReadable(false);
|
||||
m_summaryHeaderFilename.xmlCapability()->setIOWritable(false);
|
||||
m_summaryHeaderFilename.uiCapability()->setUiReadOnly(true);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -62,8 +52,8 @@ RimGridSummaryCase::~RimGridSummaryCase()
|
||||
void RimGridSummaryCase::setAssociatedEclipseCase(RimEclipseCase* eclipseCase)
|
||||
{
|
||||
m_eclipseCase = eclipseCase;
|
||||
|
||||
updateUiNames();
|
||||
this->updateAutoShortName();
|
||||
this->updateTreeItemName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -80,35 +70,12 @@ QString RimGridSummaryCase::summaryHeaderFilename() const
|
||||
return possibleSumHeaderFileName;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimGridSummaryCase::initAfterRead()
|
||||
{
|
||||
RimSummaryCase::updateOptionSensitivity();
|
||||
|
||||
updateUiNames();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimGridSummaryCase::updateUiNames()
|
||||
QString RimGridSummaryCase::caseName() const
|
||||
{
|
||||
m_summaryHeaderFilename = summaryHeaderFilename();
|
||||
|
||||
m_userName = curveDisplayName() + " - " + baseName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimGridSummaryCase::baseName() const
|
||||
{
|
||||
if (!m_eclipseCase()) return QString();
|
||||
|
||||
QFileInfo gridFileInfo(m_eclipseCase()->gridFileName());
|
||||
|
||||
return gridFileInfo.completeBaseName();
|
||||
return m_eclipseCase()->caseUserDescription();
|
||||
}
|
||||
|
||||
|
@ -36,20 +36,10 @@ public:
|
||||
RimEclipseCase* associatedEclipseCase() { return m_eclipseCase(); }
|
||||
|
||||
virtual QString summaryHeaderFilename() const override;
|
||||
|
||||
virtual caf::PdmFieldHandle* userDescriptionField() { return &m_userName; }
|
||||
virtual void initAfterRead();
|
||||
|
||||
private:
|
||||
void updateUiNames();
|
||||
QString baseName() const;
|
||||
|
||||
virtual QString caseName() const override;
|
||||
|
||||
private:
|
||||
caf::PdmPtrField<RimEclipseCase*> m_eclipseCase;
|
||||
|
||||
caf::PdmField<QString> m_userName;
|
||||
caf::PdmField<QString> m_summaryHeaderFilename;
|
||||
};
|
||||
|
||||
|
||||
|
@ -36,8 +36,8 @@ RimSummaryCase::RimSummaryCase()
|
||||
{
|
||||
CAF_PDM_InitObject("Summary Case",":/Cases16x16.png","","");
|
||||
|
||||
CAF_PDM_InitField(&curveDisplayName, "CurveDisplayName", QString("Curve Display Name"), "Curve Display Name", "", "", "");
|
||||
CAF_PDM_InitField(&autoCurveDisplayName, "AutoCurveDisplayName", true, "Auto Curve Display Name", "", "", "");
|
||||
CAF_PDM_InitField(&m_shortName, "ShortName", QString("Short Name"), "Short Name", "", "", "");
|
||||
CAF_PDM_InitField(&m_useAutoShortName, "AutoShortyName", true, "Use Auto Short Name", "", "", "");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -56,32 +56,19 @@ void RimSummaryCase::loadCase()
|
||||
if (m_summaryCaseData.isNull()) m_summaryCaseData = new RigSummaryCaseData(this->summaryHeaderFilename());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCase::caseName()
|
||||
{
|
||||
QFileInfo caseFileName(this->summaryHeaderFilename());
|
||||
|
||||
return caseFileName.completeBaseName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
|
||||
{
|
||||
if (changedField == &autoCurveDisplayName)
|
||||
if (changedField == &m_useAutoShortName)
|
||||
{
|
||||
if (autoCurveDisplayName)
|
||||
{
|
||||
RimSummaryCaseCollection* summaryCaseCollection = NULL;
|
||||
this->firstAnchestorOrThisOfType(summaryCaseCollection);
|
||||
if (summaryCaseCollection)
|
||||
{
|
||||
curveDisplayName = summaryCaseCollection->uniqueShortNameForCase(this);
|
||||
}
|
||||
}
|
||||
this->updateAutoShortName();
|
||||
}
|
||||
else if (changedField == &m_shortName)
|
||||
{
|
||||
updateTreeItemName();
|
||||
}
|
||||
|
||||
RimProject* proj = NULL;
|
||||
@ -100,5 +87,47 @@ void RimSummaryCase::fieldChangedByUi(const caf::PdmFieldHandle* changedField, c
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCase::updateOptionSensitivity()
|
||||
{
|
||||
curveDisplayName.uiCapability()->setUiReadOnly(autoCurveDisplayName);
|
||||
m_shortName.uiCapability()->setUiReadOnly(m_useAutoShortName);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCase::updateTreeItemName()
|
||||
{
|
||||
this->setUiName(caseName() + " (" + shortName() +")");
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCase::shortName() const
|
||||
{
|
||||
return m_shortName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCase::initAfterRead()
|
||||
{
|
||||
updateOptionSensitivity();
|
||||
|
||||
updateTreeItemName();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimSummaryCase::updateAutoShortName()
|
||||
{
|
||||
if(m_useAutoShortName)
|
||||
{
|
||||
RimSummaryCaseCollection* summaryCaseCollection = NULL;
|
||||
this->firstAnchestorOrThisOfType(summaryCaseCollection);
|
||||
CVF_ASSERT(summaryCaseCollection);
|
||||
|
||||
m_shortName = summaryCaseCollection->uniqueShortNameForCase(this);
|
||||
updateTreeItemName();
|
||||
}
|
||||
}
|
||||
|
@ -39,23 +39,26 @@ public:
|
||||
RimSummaryCase();
|
||||
virtual ~RimSummaryCase();
|
||||
|
||||
QString caseName();
|
||||
virtual QString summaryHeaderFilename() const = 0;
|
||||
virtual QString caseName() const = 0;
|
||||
QString shortName() const;
|
||||
|
||||
virtual QString summaryHeaderFilename() const = 0;
|
||||
void loadCase();
|
||||
void updateAutoShortName();
|
||||
void updateOptionSensitivity();
|
||||
|
||||
void loadCase();
|
||||
RigSummaryCaseData* caseData() { return m_summaryCaseData.p(); }
|
||||
|
||||
caf::PdmField<QString> curveDisplayName;
|
||||
caf::PdmField<bool> autoCurveDisplayName;
|
||||
|
||||
void updateOptionSensitivity();
|
||||
|
||||
protected:
|
||||
void updateTreeItemName();
|
||||
|
||||
caf::PdmField<QString> m_shortName;
|
||||
caf::PdmField<bool> m_useAutoShortName;
|
||||
|
||||
cvf::ref<RigSummaryCaseData> m_summaryCaseData;
|
||||
|
||||
private:
|
||||
// Overridden PDM methods
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
|
||||
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
|
||||
virtual void initAfterRead() override;
|
||||
};
|
||||
|
@ -127,10 +127,9 @@ RimGridSummaryCase* RimSummaryCaseCollection::createAndAddSummaryCaseFromEclipse
|
||||
if(RifEclipseSummaryTools::hasSummaryFiles(QDir::toNativeSeparators(gridFileName).toStdString()))
|
||||
{
|
||||
RimGridSummaryCase* newSumCase = new RimGridSummaryCase();
|
||||
newSumCase->setAssociatedEclipseCase(eclResCase);
|
||||
newSumCase->curveDisplayName = uniqueShortNameForCase(newSumCase);
|
||||
newSumCase->updateOptionSensitivity();
|
||||
this->m_cases.push_back(newSumCase);
|
||||
newSumCase->setAssociatedEclipseCase(eclResCase);
|
||||
newSumCase->updateOptionSensitivity();
|
||||
return newSumCase;
|
||||
}
|
||||
return nullptr;
|
||||
@ -141,37 +140,57 @@ RimGridSummaryCase* RimSummaryCaseCollection::createAndAddSummaryCaseFromEclipse
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
QString RimSummaryCaseCollection::uniqueShortNameForCase(RimSummaryCase* summaryCase)
|
||||
{
|
||||
QStringList allAutoShortNames;
|
||||
std::set<QString> allAutoShortNames;
|
||||
|
||||
for (RimSummaryCase* sumCase : m_cases)
|
||||
{
|
||||
if (sumCase && sumCase != summaryCase)
|
||||
{
|
||||
allAutoShortNames.push_back(sumCase->curveDisplayName());
|
||||
allAutoShortNames.insert(sumCase->shortName());
|
||||
}
|
||||
}
|
||||
|
||||
bool foundUnique = false;
|
||||
|
||||
QString caseName = summaryCase->caseName();
|
||||
QString candidateBase = caseName.left(2);
|
||||
QString candidate = candidateBase;
|
||||
int autoNumber = 0;
|
||||
while (!foundUnique)
|
||||
QString shortName;
|
||||
|
||||
if (caseName.size() > 2)
|
||||
{
|
||||
bool foundExisting = false;
|
||||
for (QString autoName : allAutoShortNames)
|
||||
QString candidate = caseName[0];
|
||||
|
||||
for (int i = 1; i < caseName.size(); ++i )
|
||||
{
|
||||
if (autoName.left(candidate.size()) == candidate)
|
||||
if (allAutoShortNames.count(candidate + caseName[i]) == 0)
|
||||
{
|
||||
candidate = candidateBase + QString::number(autoNumber++);
|
||||
foundExisting = true;
|
||||
shortName = candidate + caseName[i];
|
||||
foundUnique = true;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
foundUnique = !foundExisting;
|
||||
}
|
||||
else
|
||||
{
|
||||
shortName = caseName.left(2);
|
||||
if(allAutoShortNames.count(shortName) == 0)
|
||||
{
|
||||
foundUnique = true;
|
||||
}
|
||||
}
|
||||
|
||||
return candidate;
|
||||
QString candidate = shortName;
|
||||
int autoNumber = 0;
|
||||
|
||||
while (!foundUnique)
|
||||
{
|
||||
candidate = shortName + QString::number(autoNumber++);
|
||||
if(allAutoShortNames.count(candidate) == 0)
|
||||
{
|
||||
shortName = candidate;
|
||||
foundUnique = true;
|
||||
}
|
||||
}
|
||||
|
||||
return shortName;
|
||||
}
|
||||
|
||||
|
@ -31,16 +31,15 @@ public:
|
||||
RimSummaryCaseCollection();
|
||||
virtual ~RimSummaryCaseCollection();
|
||||
|
||||
RimSummaryCase* summaryCase(size_t idx);
|
||||
size_t summaryCaseCount();
|
||||
|
||||
void createSummaryCasesFromRelevantEclipseResultCases();
|
||||
RimSummaryCase* summaryCase(size_t idx);
|
||||
size_t summaryCaseCount();
|
||||
|
||||
void createSummaryCasesFromRelevantEclipseResultCases();
|
||||
RimGridSummaryCase* createAndAddSummaryCaseFromEclipseResultCase(RimEclipseResultCase* eclResCase);
|
||||
|
||||
void loadAllSummaryCaseData();
|
||||
void loadAllSummaryCaseData();
|
||||
|
||||
QString uniqueShortNameForCase(RimSummaryCase* summaryCase);
|
||||
QString uniqueShortNameForCase(RimSummaryCase* summaryCase);
|
||||
|
||||
private:
|
||||
caf::PdmChildArrayField<RimSummaryCase*> m_cases;
|
||||
|
@ -309,7 +309,7 @@ QString RimSummaryCurve::createCurveAutoName()
|
||||
generatedCurveName += ", ";
|
||||
}
|
||||
|
||||
generatedCurveName += m_summaryCase->curveDisplayName();
|
||||
generatedCurveName += m_summaryCase->shortName();
|
||||
}
|
||||
|
||||
return generatedCurveName;
|
||||
|
Loading…
Reference in New Issue
Block a user