Merge pull request #4740 from OPM/sync-tree-selection-with-field-value

Sync tree selection with field value
This commit is contained in:
Magne Sjaastad 2019-09-20 11:19:52 +02:00 committed by GitHub
commit d4b64c58f2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
22 changed files with 1061 additions and 846 deletions

View File

@ -605,6 +605,7 @@ void RiuSummaryCurveDefSelection::setSelectedCurveDefinitions( const std::vector
{
resetAllFields();
std::set<RifEclipseSummaryAddress::SummaryVarCategory> categories;
for ( const auto& curveDef : curveDefinitions )
{
if ( !( curveDef.summaryCase() || curveDef.isEnsembleCurve() ) ) continue;
@ -664,6 +665,14 @@ void RiuSummaryCurveDefSelection::setSelectedCurveDefinitions( const std::vector
( *identifierAndField->pdmField() ) = newSelectionVector;
}
}
categories.insert( curveDef.summaryAddress().category() );
}
if ( !categories.empty() )
{
RifEclipseSummaryAddress::SummaryVarCategory cat = *( categories.begin() );
m_currentSummaryCategory.setValue( cat );
}
}
@ -1180,7 +1189,7 @@ void RiuSummaryCurveDefSelection::defineEditorAttribute( const caf::PdmFieldHand
{
if ( &m_selectedSummaryCategories == field )
{
attrib->fieldToReceiveCurrentItemValue = &m_currentSummaryCategory;
attrib->currentIndexFieldHandle = &m_currentSummaryCategory;
attrib->showTextFilter = false;
attrib->showToggleAllCheckbox = false;
attrib->setCurrentIndexWhenItemIsChecked = true;

View File

@ -43,7 +43,6 @@
#include <QFrame>
#include <QGridLayout>
//==================================================================================================
///
//==================================================================================================
@ -51,49 +50,49 @@ class WidgetCellIds
{
public:
WidgetCellIds(QWidget* w, const std::vector<int>& occupiedCellIds)
: m_customWidget(w),
m_customWidgetCellIds(occupiedCellIds)
: m_customWidget(w)
, m_customWidgetCellIds(occupiedCellIds)
{
}
QWidget* m_customWidget;
std::vector<int> m_customWidgetCellIds;
QWidget* m_customWidget;
std::vector<int> m_customWidgetCellIds;
};
namespace caf
{
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
CustomObjectEditor::CustomObjectEditor()
{
m_columnCount = 3;
m_rowCount = 2;
m_rowCount = 2;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
CustomObjectEditor::~CustomObjectEditor()
{
}
CustomObjectEditor::~CustomObjectEditor() {}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void CustomObjectEditor::defineGridLayout(int rowCount, int columnCount)
{
m_rowCount = rowCount;
m_rowCount = rowCount;
m_columnCount = columnCount;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void CustomObjectEditor::addWidget(QWidget* widget, int row, int column, int rowSpan, int columnSpan, Qt::Alignment alignment /*= 0*/)
void CustomObjectEditor::addWidget(QWidget* widget,
int row,
int column,
int rowSpan,
int columnSpan,
Qt::Alignment alignment /*= 0*/)
{
CAF_ASSERT(isAreaAvailable(row, column, rowSpan, columnSpan));
@ -151,7 +150,8 @@ QWidget* CustomObjectEditor::createWidget(QWidget* parent)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void CustomObjectEditor::recursivelyConfigureAndUpdateTopLevelUiOrdering(const PdmUiOrdering& topLevelUiOrdering, const QString& uiConfigName)
void CustomObjectEditor::recursivelyConfigureAndUpdateTopLevelUiOrdering(const PdmUiOrdering& topLevelUiOrdering,
const QString& uiConfigName)
{
resetCellId();
@ -165,12 +165,12 @@ void CustomObjectEditor::recursivelyConfigureAndUpdateTopLevelUiOrdering(const P
if (topLevelUiItems[i].first->isUiGroup())
{
PdmUiGroup* group = static_cast<PdmUiGroup*>(topLevelUiItems[i].first);
PdmUiGroup* group = static_cast<PdmUiGroup*>(topLevelUiItems[i].first);
QMinimizePanel* groupBox = findOrCreateGroupBox(this->widget(), group, uiConfigName);
/// Insert the group box at the correct position of the parent layout
int nextCellId = getNextAvailableCellId();
std::pair<int, int> rowCol = rowAndColumn(nextCellId);
int nextCellId = getNextAvailableCellId();
std::pair<int, int> rowCol = rowAndColumn(nextCellId);
m_layout->addWidget(groupBox, rowCol.first, rowCol.second, 1, 1);
recursivelyConfigureAndUpdateUiOrderingInNewGridLayout(*group, groupBox->contentFrame(), uiConfigName);
@ -232,8 +232,8 @@ void CustomObjectEditor::resetCellId()
//--------------------------------------------------------------------------------------------------
std::pair<int, int> CustomObjectEditor::rowAndColumn(int cellId) const
{
int column = cellId % m_columnCount;
int row = cellId / m_columnCount;
int column = cellId % m_columnCount;
int row = cellId / m_columnCount;
return std::make_pair(row, column);
}
@ -284,5 +284,4 @@ std::vector<int> CustomObjectEditor::cellIds(int row, int column, int rowSpan, i
return cells;
}
} // end namespace caf

View File

@ -50,11 +50,9 @@ class WidgetCellIds;
namespace caf
{
class PdmUiItem;
class PdmUiGroup;
//==================================================================================================
/// Automatically layout top level groups into a grid layout
///
@ -77,9 +75,9 @@ public:
void addBlankCell(int row, int column);
private:
QWidget* createWidget(QWidget* parent) override;
void recursivelyConfigureAndUpdateTopLevelUiOrdering(const PdmUiOrdering& topLevelUiOrdering,
const QString& uiConfigName) override;
QWidget* createWidget(QWidget* parent) override;
void recursivelyConfigureAndUpdateTopLevelUiOrdering(const PdmUiOrdering& topLevelUiOrdering,
const QString& uiConfigName) override;
bool isAreaAvailable(int row, int column, int rowSpan, int columnSpan) const;
bool isCellIdAvailable(int cellId) const;
@ -90,15 +88,13 @@ private:
std::vector<int> cellIds(int row, int column, int rowSpan, int columnSpan) const;
private:
QPointer<QGridLayout> m_layout;
QPointer<QGridLayout> m_layout;
int m_rowCount;
int m_columnCount;
int m_currentCellId;
int m_rowCount;
int m_columnCount;
int m_currentCellId;
std::vector<WidgetCellIds> m_customWidgetAreas;
std::vector<WidgetCellIds> m_customWidgetAreas;
};
} // end namespace caf

View File

@ -3,7 +3,7 @@
#include <QApplication>
int main(int argc, char *argv[])
int main(int argc, char* argv[])
{
QApplication app(argc, argv);

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,8 @@
#pragma once
#include <QMainWindow>
#include <QAbstractItemModel>
#include <QItemSelection>
#include <QMainWindow>
class DemoPdmObject;
class DemoPdmObjectGroup;
@ -12,14 +12,14 @@ class QLabel;
namespace caf
{
class PdmObjectCollection;
class PdmObjectHandle;
class UiTreeModelPdm;
class PdmUiPropertyView;
class PdmUiTreeView;
class PdmUiTableView;
class CustomObjectEditor;
}
class PdmObjectCollection;
class PdmObjectHandle;
class UiTreeModelPdm;
class PdmUiPropertyView;
class PdmUiTreeView;
class PdmUiTableView;
class CustomObjectEditor;
} // namespace caf
class MainWindow : public QMainWindow
{
@ -30,7 +30,7 @@ public:
~MainWindow() override;
static MainWindow* instance();
void setPdmRoot(caf::PdmObjectHandle* pdmRoot);
void setPdmRoot(caf::PdmObjectHandle* pdmRoot);
private:
void createActions();
@ -56,17 +56,16 @@ private:
static MainWindow* sm_mainWindowInstance;
private:
QUndoView* undoView;
QUndoView* undoView;
caf::PdmUiTreeView* m_pdmUiTreeView;
caf::PdmUiTreeView* m_pdmUiTreeView2;
caf::PdmUiPropertyView* m_pdmUiPropertyView;
caf::PdmUiTableView* m_pdmUiTableView;
DemoPdmObjectGroup* m_testRoot;
caf::PdmUiTreeView* m_pdmUiTreeView;
caf::PdmUiTreeView* m_pdmUiTreeView2;
caf::PdmUiPropertyView* m_pdmUiPropertyView;
caf::PdmUiTableView* m_pdmUiTableView;
DemoPdmObjectGroup* m_testRoot;
caf::CustomObjectEditor* m_customObjectEditor;
caf::CustomObjectEditor* m_customObjectEditor;
QLabel* m_plotLabel;
QLabel* m_smallPlotLabel;
QLabel* m_plotLabel;
QLabel* m_smallPlotLabel;
};

View File

@ -1,38 +1,45 @@
#pragma once
#include "cafPdmObject.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmProxyValueField.h"
class ManyGroups : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
public:
public:
ManyGroups();
caf::PdmField<double> m_doubleField;
caf::PdmField<int> m_intField;
caf::PdmField<QString> m_textField;
caf::PdmField<double> m_doubleField;
caf::PdmField<int> m_intField;
caf::PdmField<QString> m_textField;
caf::PdmProxyValueField<double> m_proxyDoubleField;
caf::PdmField<std::vector<QString> > m_multiSelectList;
caf::PdmField<QString> m_stringWithMultipleOptions;
caf::PdmField<std::vector<QString>> m_multiSelectList;
caf::PdmField<QString> m_stringWithMultipleOptions;
caf::PdmField<bool> m_toggleField;
caf::PdmField<bool> m_toggleField;
caf::PdmFieldHandle* objectToggleField() override;
void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) override;
void setDoubleMember(const double& d) { m_doubleMember = d; std::cout << "setDoubleMember" << std::endl; }
double doubleMember() const { std::cout << "doubleMember" << std::endl; return m_doubleMember; }
void setDoubleMember(const double& d)
{
m_doubleMember = d;
std::cout << "setDoubleMember" << std::endl;
}
double doubleMember() const
{
std::cout << "doubleMember" << std::endl;
return m_doubleMember;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool* useOptionsOnly) override;
QList<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions,
bool* useOptionsOnly) override;
private:
double m_doubleMember;
@ -43,7 +50,7 @@ protected:
//--------------------------------------------------------------------------------------------------
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override;
void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute) override;
void defineEditorAttribute(const caf::PdmFieldHandle* field,
QString uiConfigName,
caf::PdmUiEditorAttribute* attribute) override;
};

View File

@ -43,14 +43,10 @@
#include <QTextCursor>
#include <QTextEdit>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
MenuItemProducer::MenuItemProducer()
{
}
MenuItemProducer::MenuItemProducer() {}
//--------------------------------------------------------------------------------------------------
///
@ -71,7 +67,7 @@ void MenuItemProducer::attachTextEdit(QTextEdit* textEdit)
//--------------------------------------------------------------------------------------------------
void MenuItemProducer::slotMenuItems(QPoint point)
{
QMenu menu;
QMenu menu;
QAction act("Testing", this);
connect(&act, SIGNAL(triggered()), SLOT(slotShowText()));
@ -95,7 +91,7 @@ void MenuItemProducer::slotShowText()
{
if (m_textEdit)
{
QAction* action = qobject_cast<QAction *>(sender());
QAction* action = qobject_cast<QAction*>(sender());
if (action)
{
QTextCursor cursor = m_textEdit->textCursor();

View File

@ -36,7 +36,6 @@
#pragma once
#include <QObject>
#include <QPoint>
#include <QPointer>
@ -65,6 +64,3 @@ private:
QPointer<QTextEdit> m_textEdit;
int m_textPosition;
};

View File

@ -2,13 +2,10 @@
#include "WidgetLayoutTest.h"
#include <QGridLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
//--------------------------------------------------------------------------------------------------
///
@ -47,11 +44,11 @@ WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*
m_widget4 = new QLineEdit("4", this);
m_widget5 = new QLineEdit("5", this);
m_groupBoxA = new QGroupBox("Groupbox A", this);
m_groupBoxA = new QGroupBox("Groupbox A", this);
m_groupBoxALayout = new QGridLayout();
m_groupBoxA->setLayout(m_groupBoxALayout);
m_groupBoxB = new QGroupBox("Groupbox B", this);
m_groupBoxB = new QGroupBox("Groupbox B", this);
m_groupBoxBLayout = new QGridLayout();
m_groupBoxB->setLayout(m_groupBoxBLayout);
@ -61,10 +58,7 @@ WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
WidgetLayoutTest::~WidgetLayoutTest()
{
}
WidgetLayoutTest::~WidgetLayoutTest() {}
//--------------------------------------------------------------------------------------------------
///

View File

@ -2,12 +2,9 @@
#include <QWidget>
class QGridLayout;
class QGroupBox;
class WidgetLayoutTest : public QWidget
{
Q_OBJECT
@ -19,10 +16,10 @@ public:
private:
QGridLayout* m_mainLayout;
QGroupBox* m_groupBoxA;
QGroupBox* m_groupBoxA;
QGridLayout* m_groupBoxALayout;
QGroupBox* m_groupBoxB;
QGroupBox* m_groupBoxB;
QGridLayout* m_groupBoxBLayout;
QWidget* m_widget1;
@ -36,6 +33,4 @@ private slots:
void setUpInitialConfigurationA();
void setUpInitialConfigurationB();
};

View File

@ -3,7 +3,7 @@
#include <QApplication>
int main(int argc, char *argv[])
int main(int argc, char* argv[])
{
QApplication app(argc, argv);

View File

@ -25,12 +25,11 @@
#ifdef TAP_USE_COMMAND_FRAMEWORK
#include "cafCmdExecCommandManager.h"
#include "cafCmdSelectionHelper.h"
#include "cafCmdFeatureManager.h"
#include "cafCmdSelectionHelper.h"
#endif
#include "TapProject.h"
MainWindow* MainWindow::sm_mainWindowInstance = NULL;
//--------------------------------------------------------------------------------------------------
@ -55,7 +54,6 @@ MainWindow::MainWindow()
caf::CmdExecCommandManager::instance()->enableUndoCommandSystem(true);
undoView->setStack(caf::CmdExecCommandManager::instance()->undoStack());
#endif
}
//--------------------------------------------------------------------------------------------------
@ -112,7 +110,6 @@ void MainWindow::createDockPanels()
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
}
{
QDockWidget* dockWidget = new QDockWidget("Undo stack", this);
dockWidget->setObjectName("dockWidget");
@ -123,7 +120,6 @@ void MainWindow::createDockPanels()
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
}
}
//--------------------------------------------------------------------------------------------------
@ -134,7 +130,6 @@ void MainWindow::buildTestModel()
m_project = new TapProject;
}
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -155,7 +150,7 @@ void MainWindow::setPdmRoot(caf::PdmObjectHandle* pdmRoot)
pdmRoot->fields(fields);
if (fields.size())
{
caf::PdmFieldHandle* field = fields[0];
caf::PdmFieldHandle* field = fields[0];
caf::PdmUiFieldHandle* uiFieldHandle = field->uiCapability();
if (uiFieldHandle)
{
@ -208,15 +203,14 @@ MainWindow* MainWindow::instance()
void MainWindow::createActions()
{
// Create actions
QAction* editInsert = new QAction("&Insert", this);
QAction* editRemove = new QAction("&Remove", this);
QAction* editRemoveAll = new QAction("Remove all", this);
QAction* editInsert = new QAction("&Insert", this);
QAction* editRemove = new QAction("&Remove", this);
QAction* editRemoveAll = new QAction("Remove all", this);
connect(editInsert, SIGNAL(triggered()), SLOT(slotInsert()));
connect(editRemove, SIGNAL(triggered()), SLOT(slotRemove()));
connect(editRemoveAll, SIGNAL(triggered()), SLOT(slotRemoveAll()));
// Create menus
QMenu* editMenu = menuBar()->addMenu("&Edit");
editMenu->addAction(editInsert);
@ -229,37 +223,37 @@ void MainWindow::createActions()
//--------------------------------------------------------------------------------------------------
void MainWindow::slotInsert()
{
/*
std::vector<caf::PdmUiItem*> selection;
m_pdmUiTreeView->selectedUiItems(selection);
/*
std::vector<caf::PdmUiItem*> selection;
m_pdmUiTreeView->selectedUiItems(selection);
for (size_t i = 0; i < selection.size(); ++i)
{
caf::PdmUiFieldHandle* uiFh = dynamic_cast<caf::PdmUiFieldHandle*>(selection[i]);
caf::PdmChildArrayField< caf::PdmObjectHandle*> * field = NULL;
if (uiFh) field = dynamic_cast<caf::PdmChildArrayField< caf::PdmObjectHandle*> *>(uiFh->fieldHandle());
if (field)
for (size_t i = 0; i < selection.size(); ++i)
{
field->push_back(new DemoPdmObject);
field->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
caf::PdmUiFieldHandle* uiFh = dynamic_cast<caf::PdmUiFieldHandle*>(selection[i]);
caf::PdmChildArrayField< caf::PdmObjectHandle*> * field = NULL;
return;
if (uiFh) field = dynamic_cast<caf::PdmChildArrayField< caf::PdmObjectHandle*> *>(uiFh->fieldHandle());
if (field)
{
field->push_back(new DemoPdmObject);
field->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
return;
}
#if 0
caf::PdmChildArrayFieldHandle* listField = NULL;
if (uiFh) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(uiFh->fieldHandle());
if (listField)
{
caf::PdmObjectHandle* obj = listField->createAppendObject();
listField->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
}
#endif
}
#if 0
caf::PdmChildArrayFieldHandle* listField = NULL;
if (uiFh) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(uiFh->fieldHandle());
if (listField)
{
caf::PdmObjectHandle* obj = listField->createAppendObject();
listField->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
}
#endif
}
*/
*/
}
//--------------------------------------------------------------------------------------------------
@ -272,7 +266,7 @@ void MainWindow::slotRemove()
for (size_t i = 0; i < selection.size(); ++i)
{
caf::PdmObjectHandle* obj = dynamic_cast< caf::PdmObjectHandle*>(selection[i]);
caf::PdmObjectHandle* obj = dynamic_cast<caf::PdmObjectHandle*>(selection[i]);
if (obj)
{
caf::PdmFieldHandle* field = obj->parentField();
@ -295,10 +289,7 @@ void MainWindow::slotRemove()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void MainWindow::slotRemoveAll()
{
}
void MainWindow::slotRemoveAll() {}
//--------------------------------------------------------------------------------------------------
///
@ -307,12 +298,12 @@ void MainWindow::slotSimpleSelectionChanged()
{
std::vector<caf::PdmUiItem*> selection;
m_pdmUiTreeView->selectedUiItems(selection);
caf::PdmObjectHandle* obj = NULL;
caf::PdmObjectHandle* obj = NULL;
caf::PdmChildArrayFieldHandle* listField = NULL;
if (selection.size())
{
caf::PdmUiObjectHandle* pdmUiObj = dynamic_cast<caf::PdmUiObjectHandle*>( selection[0] );
caf::PdmUiObjectHandle* pdmUiObj = dynamic_cast<caf::PdmUiObjectHandle*>(selection[0]);
if (pdmUiObj) obj = pdmUiObj->objectHandle();
}
@ -326,7 +317,7 @@ void MainWindow::slotShowTableView()
{
std::vector<caf::PdmUiItem*> selection;
m_pdmUiTreeView2->selectedUiItems(selection);
caf::PdmObjectHandle* obj = NULL;
caf::PdmObjectHandle* obj = NULL;
caf::PdmChildArrayFieldHandle* listField = NULL;
if (selection.size())

View File

@ -1,24 +1,23 @@
#pragma once
#include <QMainWindow>
#include <QAbstractItemModel>
#include <QItemSelection>
#include <QMainWindow>
class QTreeView;
class QUndoView;
class TapProject;
namespace caf
{
class PdmObjectCollection;
class PdmObjectHandle;
class UiTreeModelPdm;
class PdmUiPropertyView;
class PdmUiTreeView;
class PdmUiTableView;
}
class PdmObjectCollection;
class PdmObjectHandle;
class UiTreeModelPdm;
class PdmUiPropertyView;
class PdmUiTreeView;
class PdmUiTableView;
} // namespace caf
class MainWindow : public QMainWindow
{
@ -29,7 +28,7 @@ public:
~MainWindow();
static MainWindow* instance();
void setPdmRoot(caf::PdmObjectHandle* pdmRoot);
void setPdmRoot(caf::PdmObjectHandle* pdmRoot);
private:
void createActions();
@ -37,7 +36,6 @@ private:
void createToolBars();
void createDockPanels();
void buildTestModel();
void releaseTestData();
@ -49,18 +47,16 @@ private slots:
void slotSimpleSelectionChanged();
void slotShowTableView();
private:
static MainWindow* sm_mainWindowInstance;
private:
QUndoView* undoView;
QUndoView* undoView;
caf::PdmUiTreeView* m_pdmUiTreeView;
caf::PdmUiTreeView* m_pdmUiTreeView2;
caf::PdmUiPropertyView* m_pdmUiPropertyView;
caf::PdmUiTableView* m_pdmUiTableView;
caf::PdmUiTreeView* m_pdmUiTreeView;
caf::PdmUiTreeView* m_pdmUiTreeView2;
caf::PdmUiPropertyView* m_pdmUiPropertyView;
caf::PdmUiTableView* m_pdmUiTableView;
TapProject* m_project;
TapProject* m_project;
};

View File

@ -2,11 +2,8 @@
#include "cafPdmUiListEditor.h"
CAF_PDM_SOURCE_INIT(TapCvfSpecialization, "TapCvfSpecialization");
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
@ -26,7 +23,9 @@ TapCvfSpecialization::TapCvfSpecialization()
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void TapCvfSpecialization::fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue)
void TapCvfSpecialization::fieldChangedByUi(const caf::PdmFieldHandle* changedField,
const QVariant& oldValue,
const QVariant& newValue)
{
if (changedField == &m_colorField)
{
@ -37,7 +36,9 @@ void TapCvfSpecialization::fieldChangedByUi(const caf::PdmFieldHandle* changedFi
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
void TapCvfSpecialization::defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute)
void TapCvfSpecialization::defineEditorAttribute(const caf::PdmFieldHandle* field,
QString uiConfigName,
caf::PdmUiEditorAttribute* attribute)
{
if (field == &m_vecArrayField)
{
@ -48,4 +49,3 @@ void TapCvfSpecialization::defineEditorAttribute(const caf::PdmFieldHandle* fiel
}
}
}

View File

@ -1,42 +1,38 @@
#pragma once
#include "cvfBase.h"
#include "cvfColor3.h"
#include "cvfVector3.h"
#include "cvfMatrix4.h"
#include "cvfVector3.h"
#include "cafPdmFieldCvfColor.h"
#include "cafPdmFieldCvfVec3d.h"
#include "cafPdmFieldCvfMat4d.h"
#include "cafPdmFieldCvfVec3d.h"
#include "cafPdmObject.h"
#include "cafPdmField.h"
#include "cafPdmObject.h"
#include <vector>
class TapCvfSpecialization : public caf::PdmObject
{
CAF_PDM_HEADER_INIT;
public:
TapCvfSpecialization();
caf::PdmField<QString> m_testField;
caf::PdmField<cvf::Color3f> m_colorField;
caf::PdmField<cvf::Vec3d> m_vectorField;
caf::PdmField<cvf::Mat4d> m_matrixField;
caf::PdmField<cvf::Vec3d> m_vectorField;
caf::PdmField<cvf::Mat4d> m_matrixField;
caf::PdmField< std::vector< cvf::Vec3d> > m_vecArrayField;
caf::PdmField<std::vector<cvf::Vec3d>> m_vecArrayField;
public:
virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue);
protected:
virtual void defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
virtual void
defineEditorAttribute(const caf::PdmFieldHandle* field, QString uiConfigName, caf::PdmUiEditorAttribute* attribute);
};

View File

@ -17,7 +17,4 @@ TapProject::TapProject(void)
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
TapProject::~TapProject(void)
{
}
TapProject::~TapProject(void) {}

View File

@ -1,13 +1,11 @@
#pragma once
#include "cafPdmDocument.h"
#include "cafPdmChildArrayField.h"
#include "cafPdmChildField.h"
#include "cafPdmDocument.h"
class TapCvfSpecialization;
class TapProject : public caf::PdmDocument
{
CAF_PDM_HEADER_INIT;
@ -16,7 +14,7 @@ public:
TapProject(void);
virtual ~TapProject(void);
caf::PdmChildArrayField< caf::PdmObjectHandle* > m_objectList;
caf::PdmChildArrayField<caf::PdmObjectHandle*> m_objectList;
caf::PdmChildField< TapCvfSpecialization* > m_testSpecialization;
caf::PdmChildField<TapCvfSpecialization*> m_testSpecialization;
};

View File

@ -2,13 +2,10 @@
#include "WidgetLayoutTest.h"
#include <QGridLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QGroupBox>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
//--------------------------------------------------------------------------------------------------
///
@ -47,11 +44,11 @@ WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*
m_widget4 = new QLineEdit("4", this);
m_widget5 = new QLineEdit("5", this);
m_groupBoxA = new QGroupBox("Groupbox A", this);
m_groupBoxA = new QGroupBox("Groupbox A", this);
m_groupBoxALayout = new QGridLayout();
m_groupBoxA->setLayout(m_groupBoxALayout);
m_groupBoxB = new QGroupBox("Groupbox B", this);
m_groupBoxB = new QGroupBox("Groupbox B", this);
m_groupBoxBLayout = new QGridLayout();
m_groupBoxB->setLayout(m_groupBoxBLayout);
@ -61,10 +58,7 @@ WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
WidgetLayoutTest::~WidgetLayoutTest()
{
}
WidgetLayoutTest::~WidgetLayoutTest() {}
//--------------------------------------------------------------------------------------------------
///

View File

@ -2,12 +2,9 @@
#include <QWidget>
class QGridLayout;
class QGroupBox;
class WidgetLayoutTest : public QWidget
{
Q_OBJECT
@ -19,10 +16,10 @@ public:
private:
QGridLayout* m_mainLayout;
QGroupBox* m_groupBoxA;
QGroupBox* m_groupBoxA;
QGridLayout* m_groupBoxALayout;
QGroupBox* m_groupBoxB;
QGroupBox* m_groupBoxB;
QGridLayout* m_groupBoxBLayout;
QWidget* m_widget1;
@ -36,6 +33,4 @@ private slots:
void setUpInitialConfigurationA();
void setUpInitialConfigurationB();
};

View File

@ -354,6 +354,26 @@ void PdmUiTreeSelectionEditor::configureAndUpdateUi(const QString& uiConfigName)
m_treeView->setRootIsDecorated(m_model->hasGrandChildren());
m_model->resetUiValueCache();
if (m_attributes.currentIndexFieldHandle)
{
PdmUiFieldHandle* uiFieldHandle = m_attributes.currentIndexFieldHandle->uiCapability();
if (uiFieldHandle)
{
QModelIndexList indices = allVisibleSourceModelIndices();
QVariant currentItemValue = uiFieldHandle->uiValue();
for (const auto& mi : indices)
{
QVariant itemValue = m_model->data(mi, PdmUiTreeSelectionQModel::optionItemValueRole());
if (currentItemValue == itemValue)
{
QModelIndex treeViewIndex = m_proxyModel->mapFromSource(mi);
m_treeView->setCurrentIndex(treeViewIndex);
}
}
}
}
}
//--------------------------------------------------------------------------------------------------
@ -637,9 +657,9 @@ void PdmUiTreeSelectionEditor::currentChanged(const QModelIndex& current)
m_proxyModel->setData(current, true, Qt::CheckStateRole);
}
if (m_attributes.fieldToReceiveCurrentItemValue)
if (m_attributes.currentIndexFieldHandle)
{
PdmUiFieldHandle* uiFieldHandle = m_attributes.fieldToReceiveCurrentItemValue->uiCapability();
PdmUiFieldHandle* uiFieldHandle = m_attributes.currentIndexFieldHandle->uiCapability();
if (uiFieldHandle)
{
QVariant v = m_proxyModel->data(current, PdmUiTreeSelectionQModel::optionItemValueRole());

View File

@ -64,11 +64,11 @@ public:
bool singleSelectionMode;
bool setCurrentIndexWhenItemIsChecked;
/// fieldToReceiveCurrentFieldValue is used to communicate the value of current item in the tree view
/// currentIndexFieldHandle is used to communicate the value of current item in the tree view
/// This is useful when displaying a list of appEnums, and a dependent view is displaying content based on
/// the current item in the tree view
/// Make sure the type of the receiving field is of the same type as the field used in PdmUiTreeSelectionEditor
caf::PdmFieldHandle* fieldToReceiveCurrentItemValue;
caf::PdmFieldHandle* currentIndexFieldHandle;
public:
PdmUiTreeSelectionEditorAttribute()
@ -78,7 +78,7 @@ public:
singleSelectionMode = false;
setCurrentIndexWhenItemIsChecked = false;
fieldToReceiveCurrentItemValue = nullptr;
currentIndexFieldHandle = nullptr;
}
};