#775 Short name for summary cases refurbished

This commit is contained in:
Jacob Støren 2016-08-05 11:05:58 +02:00
parent 0d7a1e8bd7
commit ff6b198966
9 changed files with 121 additions and 104 deletions

View File

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

View File

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

View File

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

View File

@ -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;
};

View File

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

View File

@ -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;
};

View File

@ -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;
}

View File

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

View File

@ -309,7 +309,7 @@ QString RimSummaryCurve::createCurveAutoName()
generatedCurveName += ", ";
}
generatedCurveName += m_summaryCase->curveDisplayName();
generatedCurveName += m_summaryCase->shortName();
}
return generatedCurveName;