mirror of
https://github.com/OPM/ResInsight.git
synced 2025-02-25 18:55:39 -06:00
Updated riGetSelectedCases to use a string as type name
Improved how to get currently selected cases p4#: 21625
This commit is contained in:
parent
b5f5f49572
commit
97c3a330f6
@ -785,11 +785,7 @@ void RimUiTreeView::slotCloseCase()
|
||||
caf::PdmObjectGroup group;
|
||||
|
||||
QModelIndexList mil = m->selectedRows();
|
||||
for (int i = 0; i < mil.size(); i++)
|
||||
{
|
||||
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(mil.at(i));
|
||||
group.addObject(uiItem->dataObject().p());
|
||||
}
|
||||
populateObjectGroupFromModelIndexList(mil, &group);
|
||||
|
||||
std::vector<caf::PdmPointer<RimCase> > typedObjects;
|
||||
group.objectsByType(&typedObjects);
|
||||
@ -928,11 +924,7 @@ void RimUiTreeView::createPdmObjectsFromClipboard(caf::PdmObjectGroup* objectGro
|
||||
if (!mdWithIndexes) return;
|
||||
|
||||
QModelIndexList indexList = mdWithIndexes->indexes();
|
||||
for (int i = 0; i < indexList.size(); i++)
|
||||
{
|
||||
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(indexList.at(i));
|
||||
objectGroup->addObject(uiItem->dataObject().p());
|
||||
}
|
||||
populateObjectGroupFromModelIndexList(indexList, objectGroup);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@ -1465,3 +1457,24 @@ void RimUiTreeView::slotToggleItemsOff()
|
||||
executeSelectionToggleOperation(TOGGLE_OFF);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RimUiTreeView::populateObjectGroupFromModelIndexList(const QModelIndexList& modelIndexList, caf::PdmObjectGroup* objectGroup)
|
||||
{
|
||||
CVF_ASSERT(objectGroup);
|
||||
|
||||
RimUiTreeModelPdm* myModel = dynamic_cast<RimUiTreeModelPdm*>(model());
|
||||
if (!myModel) return;
|
||||
|
||||
for (int i = 0; i < modelIndexList.size(); i++)
|
||||
{
|
||||
caf::PdmUiTreeItem* uiItem = myModel->getTreeItemFromIndex(modelIndexList.at(i));
|
||||
|
||||
if (uiItem && uiItem->dataObject() && uiItem->dataObject().p())
|
||||
{
|
||||
objectGroup->addObject(uiItem->dataObject().p());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -46,6 +46,8 @@ public:
|
||||
void applyTreeViewStateFromString(const QString& treeViewState);
|
||||
void storeTreeViewStateToString(QString& treeViewState);
|
||||
|
||||
void populateObjectGroupFromModelIndexList(const QModelIndexList& modelIndexList, caf::PdmObjectGroup* objectGroup);
|
||||
|
||||
static void applyCurrentIndexFromString(QAbstractItemView& itemView, const QString& currentIndexString);
|
||||
static void storeCurrentIndexToString(const QAbstractItemView& itemView, QString& currentIndexString);
|
||||
|
||||
|
@ -297,10 +297,7 @@ void RiaSocketServer::readCommandFromOctave()
|
||||
|
||||
if (reservoir)
|
||||
{
|
||||
caseId = reservoir->caseId();
|
||||
caseName = reservoir->caseUserDescription();
|
||||
|
||||
caseInfo(reservoir, caseGroupId, caseType);
|
||||
getCaseInfoFromCase(reservoir, caseId, caseName, caseType, caseGroupId);
|
||||
}
|
||||
|
||||
quint64 byteCount = 2*sizeof(qint64);
|
||||
@ -362,20 +359,24 @@ void RiaSocketServer::readCommandFromOctave()
|
||||
RiuMainWindow* ruiMainWindow = RiuMainWindow::instance();
|
||||
if (ruiMainWindow)
|
||||
{
|
||||
std::vector<RimCase*> cases;
|
||||
ruiMainWindow->selectedCases(cases);
|
||||
|
||||
std::vector<qint64> caseIds;
|
||||
std::vector<QString> caseNames;
|
||||
std::vector<qint64> caseTypes;
|
||||
std::vector<QString> caseTypes;
|
||||
std::vector<qint64> caseGroupIds;
|
||||
|
||||
ruiMainWindow->selectionInfo(caseIds, caseNames, caseTypes, caseGroupIds);
|
||||
getCaseInfoFromCases(cases, caseIds, caseNames, caseTypes, caseGroupIds);
|
||||
|
||||
quint64 byteCount = sizeof(quint64);
|
||||
quint64 selectionCount = caseIds.size();
|
||||
|
||||
for (size_t i = 0; i < selectionCount; i++)
|
||||
{
|
||||
byteCount += 2*sizeof(qint64);
|
||||
byteCount += caseNames[i].size() * sizeof(QChar);
|
||||
byteCount += 3*sizeof(qint64);
|
||||
byteCount += caseTypes[i].size() * sizeof(QChar);
|
||||
}
|
||||
|
||||
socketStream << byteCount;
|
||||
@ -443,19 +444,7 @@ void RiaSocketServer::readCommandFromOctave()
|
||||
std::vector<QString> caseTypes;
|
||||
std::vector<qint64> caseGroupIds;
|
||||
|
||||
for (size_t i = 0; i < cases.size(); i++)
|
||||
{
|
||||
RimCase* rimCase = cases[i];
|
||||
|
||||
qint64 caseGroupId;
|
||||
QString caseType;
|
||||
caseInfo(rimCase, caseGroupId, caseType);
|
||||
|
||||
caseIds.push_back(rimCase->caseId);
|
||||
caseNames.push_back(rimCase->caseUserDescription);
|
||||
caseTypes.push_back(caseType);
|
||||
caseGroupIds.push_back(caseGroupId);
|
||||
}
|
||||
getCaseInfoFromCases(cases, caseIds, caseNames, caseTypes, caseGroupIds);
|
||||
|
||||
quint64 byteCount = sizeof(quint64);
|
||||
quint64 caseCount = caseIds.size();
|
||||
@ -910,10 +899,13 @@ void RiaSocketServer::calculateMatrixModelActiveCellInfo(RimCase* reservoirCase,
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaSocketServer::caseInfo(RimCase* rimCase, qint64& caseGroupId, QString& caseType)
|
||||
void RiaSocketServer::getCaseInfoFromCase(RimCase* rimCase, qint64& caseId, QString& caseName, QString& caseType, qint64& caseGroupId)
|
||||
{
|
||||
CVF_ASSERT(rimCase);
|
||||
|
||||
caseId = rimCase->caseId;
|
||||
caseName = rimCase->caseUserDescription;
|
||||
|
||||
RimCaseCollection* caseCollection = rimCase->parentCaseCollection();
|
||||
if (caseCollection)
|
||||
{
|
||||
@ -943,3 +935,25 @@ void RiaSocketServer::caseInfo(RimCase* rimCase, qint64& caseGroupId, QString& c
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiaSocketServer::getCaseInfoFromCases(std::vector<RimCase*>& cases, std::vector<qint64>& caseIds, std::vector<QString>& caseNames, std::vector<QString> &caseTypes, std::vector<qint64>& caseGroupIds)
|
||||
{
|
||||
for (size_t i = 0; i < cases.size(); i++)
|
||||
{
|
||||
RimCase* rimCase = cases[i];
|
||||
|
||||
qint64 caseId = -1;
|
||||
QString caseName;
|
||||
QString caseType;
|
||||
qint64 caseGroupId = -1;
|
||||
getCaseInfoFromCase(rimCase, caseId, caseName, caseType, caseGroupId);
|
||||
|
||||
caseIds.push_back(rimCase->caseId);
|
||||
caseNames.push_back(rimCase->caseUserDescription);
|
||||
caseTypes.push_back(caseType);
|
||||
caseGroupIds.push_back(caseGroupId);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -49,6 +49,7 @@ private slots:
|
||||
|
||||
private:
|
||||
void readCommandFromOctave();
|
||||
|
||||
void readPropertyDataFromOctave();
|
||||
|
||||
|
||||
@ -66,7 +67,13 @@ private:
|
||||
std::vector<qint32>& hostCellJ,
|
||||
std::vector<qint32>& hostCellK);
|
||||
|
||||
void caseInfo(RimCase* rimCase, qint64& caseGroupId, QString& caseType);
|
||||
void getCaseInfoFromCase(RimCase* rimCase, qint64& caseId, QString& caseName, QString& caseType, qint64& caseGroupId);
|
||||
|
||||
void getCaseInfoFromCases( std::vector<RimCase*>& cases,
|
||||
std::vector<qint64>& caseIds,
|
||||
std::vector<QString>& caseNames,
|
||||
std::vector<QString>& caseTypes,
|
||||
std::vector<qint64>& caseGroupIds);
|
||||
|
||||
|
||||
private:
|
||||
|
@ -1524,32 +1524,21 @@ void RiuMainWindow::updateScaleValue()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void RiuMainWindow::selectionInfo(std::vector<qint64>& caseIds, std::vector<QString>& caseNames, std::vector<qint64>& caseTypes, std::vector<qint64>& caseGroupIds)
|
||||
void RiuMainWindow::selectedCases(std::vector<RimCase*>& cases)
|
||||
{
|
||||
if (m_treeView && m_treeView->selectionModel())
|
||||
{
|
||||
QModelIndexList selectedModelIndexes = m_treeView->selectionModel()->selectedIndexes();
|
||||
|
||||
caf::PdmObjectGroup group;
|
||||
m_treeView->populateObjectGroupFromModelIndexList(selectedModelIndexes, &group);
|
||||
|
||||
for (int i = 0; i < selectedModelIndexes.size(); i++)
|
||||
std::vector<caf::PdmPointer<RimCase> > typedObjects;
|
||||
group.objectsByType(&typedObjects);
|
||||
|
||||
for (size_t i = 0; i < typedObjects.size(); i++)
|
||||
{
|
||||
caf::PdmUiTreeItem* uiTreeItem = m_treeModelPdm->getTreeItemFromIndex(selectedModelIndexes[i]);
|
||||
if (uiTreeItem && uiTreeItem->dataObject())
|
||||
{
|
||||
RimCase* rimCase = dynamic_cast<RimCase*>(uiTreeItem->dataObject().p());
|
||||
if (rimCase)
|
||||
{
|
||||
caseIds.push_back(rimCase->caseId());
|
||||
caseNames.push_back(rimCase->caseUserDescription());
|
||||
caseTypes.push_back(-1);
|
||||
|
||||
qint64 caseGroupId = -1;
|
||||
if (rimCase->parentGridCaseGroup())
|
||||
{
|
||||
caseGroupId = rimCase->parentGridCaseGroup()->groupId();
|
||||
}
|
||||
caseGroupIds.push_back(caseGroupId);
|
||||
}
|
||||
}
|
||||
cases.push_back(typedObjects[i]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -40,6 +40,7 @@ class RiuResultInfoPanel;
|
||||
class RiuProcessMonitor;
|
||||
class RimUiTreeModelPdm;
|
||||
class RimUiTreeView;
|
||||
class RimCase;
|
||||
|
||||
namespace caf
|
||||
{
|
||||
@ -84,7 +85,7 @@ public:
|
||||
|
||||
void setCurrentObjectInTreeView(caf::PdmObject* object);
|
||||
|
||||
void selectionInfo(std::vector<qint64>& caseIds, std::vector<QString>& caseNames, std::vector<qint64>& caseTypes, std::vector<qint64>& caseGroupIds);
|
||||
void selectedCases(std::vector<RimCase*>& cases);
|
||||
|
||||
protected:
|
||||
virtual void closeEvent(QCloseEvent* event);
|
||||
|
@ -4,7 +4,7 @@
|
||||
|
||||
#include "riSettings.h"
|
||||
|
||||
void getSelectedCases(std::vector<qint64>& caseIds, std::vector<QString>& caseNames, std::vector<qint64>& caseTypes, std::vector<qint64>& caseGroupIds, const QString &hostName, quint16 port)
|
||||
void getSelectedCases(std::vector<qint64>& caseIds, std::vector<QString>& caseNames, std::vector<QString>& caseTypes, std::vector<qint64>& caseGroupIds, const QString &hostName, quint16 port)
|
||||
{
|
||||
QString serverName = hostName;
|
||||
quint16 serverPort = port;
|
||||
@ -60,7 +60,7 @@ void getSelectedCases(std::vector<qint64>& caseIds, std::vector<QString>& caseNa
|
||||
|
||||
qint64 caseId = -1;
|
||||
QString caseName;
|
||||
qint64 caseType = -1;
|
||||
QString caseType;
|
||||
qint64 caseGroupId = -1;
|
||||
|
||||
for (size_t i = 0; i < selectionCount; i++)
|
||||
@ -86,27 +86,25 @@ DEFUN_DLD (riGetSelectedCases, args, nargout,
|
||||
"\n"
|
||||
" riGetSelectedCases()\n"
|
||||
"\n"
|
||||
"Returns meta information for the Selected Case(s) in ResInsight.\n"
|
||||
"This function returns a CaseInfo Structure for each of the cases selected in ResInsight at the time when the script was launched.\n"
|
||||
)
|
||||
{
|
||||
octave_value_list retval;
|
||||
|
||||
int nargin = args.length ();
|
||||
if (nargin > 0)
|
||||
{
|
||||
error("riGetCurrentCase: Too many arguments, this function does not take any arguments.\n");
|
||||
error("riGetSelectedCases: Too many arguments, this function does not take any arguments.\n");
|
||||
print_usage();
|
||||
}
|
||||
else if (nargout != 1)
|
||||
{
|
||||
error("riGetCurrentCase: Wrong number of output arguments, this function requires one output argument.\n");
|
||||
error("riGetSelectedCases: Wrong number of output arguments, this function requires one output argument.\n");
|
||||
print_usage();
|
||||
}
|
||||
else
|
||||
{
|
||||
std::vector<qint64> caseIds;
|
||||
std::vector<QString> caseNames;
|
||||
std::vector<qint64> caseTypes;
|
||||
std::vector<QString> caseTypes;
|
||||
std::vector<qint64> caseGroupIds;
|
||||
|
||||
getSelectedCases(caseIds, caseNames, caseTypes, caseGroupIds, "127.0.0.1", 40001);
|
||||
@ -117,7 +115,7 @@ DEFUN_DLD (riGetSelectedCases, args, nargout,
|
||||
caseCount != caseTypes.size() ||
|
||||
caseCount != caseGroupIds.size())
|
||||
{
|
||||
error("riGetCurrentCase: Inconsistent data received from ResInsight.\n");
|
||||
error("riGetSelectedCases: Inconsistent data received from ResInsight.\n");
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -132,7 +130,7 @@ DEFUN_DLD (riGetSelectedCases, args, nargout,
|
||||
{
|
||||
cellValuesA(i) = caseIds[i];
|
||||
cellValuesB(i) = caseNames[i].toLatin1().data();
|
||||
cellValuesC(i) = caseTypes[i];
|
||||
cellValuesC(i) = caseTypes[i].toLatin1().data();
|
||||
cellValuesD(i) = caseGroupIds[i];
|
||||
}
|
||||
|
||||
@ -149,6 +147,6 @@ DEFUN_DLD (riGetSelectedCases, args, nargout,
|
||||
}
|
||||
}
|
||||
|
||||
return retval;
|
||||
return octave_value();
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user