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(); resetAllFields();
std::set<RifEclipseSummaryAddress::SummaryVarCategory> categories;
for ( const auto& curveDef : curveDefinitions ) for ( const auto& curveDef : curveDefinitions )
{ {
if ( !( curveDef.summaryCase() || curveDef.isEnsembleCurve() ) ) continue; if ( !( curveDef.summaryCase() || curveDef.isEnsembleCurve() ) ) continue;
@ -664,6 +665,14 @@ void RiuSummaryCurveDefSelection::setSelectedCurveDefinitions( const std::vector
( *identifierAndField->pdmField() ) = newSelectionVector; ( *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 ) if ( &m_selectedSummaryCategories == field )
{ {
attrib->fieldToReceiveCurrentItemValue = &m_currentSummaryCategory; attrib->currentIndexFieldHandle = &m_currentSummaryCategory;
attrib->showTextFilter = false; attrib->showTextFilter = false;
attrib->showToggleAllCheckbox = false; attrib->showToggleAllCheckbox = false;
attrib->setCurrentIndexWhenItemIsChecked = true; attrib->setCurrentIndexWhenItemIsChecked = true;

View File

@ -43,57 +43,56 @@
#include <QFrame> #include <QFrame>
#include <QGridLayout> #include <QGridLayout>
//================================================================================================== //==================================================================================================
/// ///
//================================================================================================== //==================================================================================================
class WidgetCellIds class WidgetCellIds
{ {
public: public:
WidgetCellIds(QWidget* w, const std::vector<int>& occupiedCellIds) WidgetCellIds(QWidget* w, const std::vector<int>& occupiedCellIds)
: m_customWidget(w), : m_customWidget(w)
m_customWidgetCellIds(occupiedCellIds) , m_customWidgetCellIds(occupiedCellIds)
{ {
} }
QWidget* m_customWidget; QWidget* m_customWidget;
std::vector<int> m_customWidgetCellIds; std::vector<int> m_customWidgetCellIds;
}; };
namespace caf namespace caf
{ {
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
CustomObjectEditor::CustomObjectEditor() CustomObjectEditor::CustomObjectEditor()
{ {
m_columnCount = 3; m_columnCount = 3;
m_rowCount = 2; m_rowCount = 2;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
CustomObjectEditor::~CustomObjectEditor() CustomObjectEditor::~CustomObjectEditor() {}
{
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void CustomObjectEditor::defineGridLayout(int rowCount, int columnCount) void CustomObjectEditor::defineGridLayout(int rowCount, int columnCount)
{ {
m_rowCount = rowCount; m_rowCount = rowCount;
m_columnCount = columnCount; 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)); CAF_ASSERT(isAreaAvailable(row, column, rowSpan, columnSpan));
@ -104,7 +103,7 @@ void CustomObjectEditor::addWidget(QWidget* widget, int row, int column, int row
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void CustomObjectEditor::removeWidget(QWidget* widget) void CustomObjectEditor::removeWidget(QWidget* widget)
{ {
@ -127,7 +126,7 @@ void CustomObjectEditor::removeWidget(QWidget* widget)
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void CustomObjectEditor::addBlankCell(int row, int column) void CustomObjectEditor::addBlankCell(int row, int column)
{ {
@ -135,7 +134,7 @@ void CustomObjectEditor::addBlankCell(int row, int column)
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
QWidget* CustomObjectEditor::createWidget(QWidget* parent) QWidget* CustomObjectEditor::createWidget(QWidget* parent)
{ {
@ -149,9 +148,10 @@ QWidget* CustomObjectEditor::createWidget(QWidget* parent)
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void CustomObjectEditor::recursivelyConfigureAndUpdateTopLevelUiOrdering(const PdmUiOrdering& topLevelUiOrdering, const QString& uiConfigName) void CustomObjectEditor::recursivelyConfigureAndUpdateTopLevelUiOrdering(const PdmUiOrdering& topLevelUiOrdering,
const QString& uiConfigName)
{ {
resetCellId(); resetCellId();
@ -165,14 +165,14 @@ void CustomObjectEditor::recursivelyConfigureAndUpdateTopLevelUiOrdering(const P
if (topLevelUiItems[i].first->isUiGroup()) 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); QMinimizePanel* groupBox = findOrCreateGroupBox(this->widget(), group, uiConfigName);
/// Insert the group box at the correct position of the parent layout /// Insert the group box at the correct position of the parent layout
int nextCellId = getNextAvailableCellId(); int nextCellId = getNextAvailableCellId();
std::pair<int, int> rowCol = rowAndColumn(nextCellId); std::pair<int, int> rowCol = rowAndColumn(nextCellId);
m_layout->addWidget(groupBox, rowCol.first, rowCol.second, 1, 1); m_layout->addWidget(groupBox, rowCol.first, rowCol.second, 1, 1);
recursivelyConfigureAndUpdateUiOrderingInNewGridLayout(*group, groupBox->contentFrame(), uiConfigName); recursivelyConfigureAndUpdateUiOrderingInNewGridLayout(*group, groupBox->contentFrame(), uiConfigName);
} }
@ -181,7 +181,7 @@ void CustomObjectEditor::recursivelyConfigureAndUpdateTopLevelUiOrdering(const P
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool CustomObjectEditor::isAreaAvailable(int row, int column, int rowSpan, int columnSpan) const bool CustomObjectEditor::isAreaAvailable(int row, int column, int rowSpan, int columnSpan) const
{ {
@ -201,7 +201,7 @@ bool CustomObjectEditor::isAreaAvailable(int row, int column, int rowSpan, int c
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
bool CustomObjectEditor::isCellIdAvailable(int cellId) const bool CustomObjectEditor::isCellIdAvailable(int cellId) const
{ {
@ -220,7 +220,7 @@ bool CustomObjectEditor::isCellIdAvailable(int cellId) const
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void CustomObjectEditor::resetCellId() void CustomObjectEditor::resetCellId()
{ {
@ -228,18 +228,18 @@ void CustomObjectEditor::resetCellId()
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::pair<int, int> CustomObjectEditor::rowAndColumn(int cellId) const std::pair<int, int> CustomObjectEditor::rowAndColumn(int cellId) const
{ {
int column = cellId % m_columnCount; int column = cellId % m_columnCount;
int row = cellId / m_columnCount; int row = cellId / m_columnCount;
return std::make_pair(row, column); return std::make_pair(row, column);
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
int CustomObjectEditor::cellId(int row, int column) const int CustomObjectEditor::cellId(int row, int column) const
{ {
@ -247,7 +247,7 @@ int CustomObjectEditor::cellId(int row, int column) const
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
int CustomObjectEditor::getNextAvailableCellId() int CustomObjectEditor::getNextAvailableCellId()
{ {
@ -267,7 +267,7 @@ int CustomObjectEditor::getNextAvailableCellId()
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
std::vector<int> CustomObjectEditor::cellIds(int row, int column, int rowSpan, int columnSpan) const std::vector<int> CustomObjectEditor::cellIds(int row, int column, int rowSpan, int columnSpan) const
{ {
@ -284,5 +284,4 @@ std::vector<int> CustomObjectEditor::cellIds(int row, int column, int rowSpan, i
return cells; return cells;
} }
} // end namespace caf } // end namespace caf

View File

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

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

@ -1,49 +1,56 @@
#pragma once #pragma once
#include "cafPdmObject.h"
#include "cafPdmField.h" #include "cafPdmField.h"
#include "cafPdmObject.h"
#include "cafPdmProxyValueField.h" #include "cafPdmProxyValueField.h"
class ManyGroups : public caf::PdmObject class ManyGroups : public caf::PdmObject
{ {
CAF_PDM_HEADER_INIT; CAF_PDM_HEADER_INIT;
public:
public:
ManyGroups(); ManyGroups();
caf::PdmField<double> m_doubleField; caf::PdmField<double> m_doubleField;
caf::PdmField<int> m_intField; caf::PdmField<int> m_intField;
caf::PdmField<QString> m_textField; caf::PdmField<QString> m_textField;
caf::PdmProxyValueField<double> m_proxyDoubleField; caf::PdmProxyValueField<double> m_proxyDoubleField;
caf::PdmField<std::vector<QString> > m_multiSelectList; caf::PdmField<std::vector<QString>> m_multiSelectList;
caf::PdmField<QString> m_stringWithMultipleOptions; caf::PdmField<QString> m_stringWithMultipleOptions;
caf::PdmField<bool> m_toggleField; caf::PdmField<bool> m_toggleField;
caf::PdmFieldHandle* objectToggleField() override; caf::PdmFieldHandle* objectToggleField() 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;
void setDoubleMember(const double& d) { m_doubleMember = d; std::cout << "setDoubleMember" << std::endl; } void setDoubleMember(const double& d)
double doubleMember() const { std::cout << "doubleMember" << std::endl; return m_doubleMember; } {
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: private:
double m_doubleMember; double m_doubleMember;
protected: protected:
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) override; 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,17 +43,13 @@
#include <QTextCursor> #include <QTextCursor>
#include <QTextEdit> #include <QTextEdit>
//--------------------------------------------------------------------------------------------------
///
//--------------------------------------------------------------------------------------------------
MenuItemProducer::MenuItemProducer() {}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//--------------------------------------------------------------------------------------------------
MenuItemProducer::MenuItemProducer()
{
}
//--------------------------------------------------------------------------------------------------
///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void MenuItemProducer::attachTextEdit(QTextEdit* textEdit) void MenuItemProducer::attachTextEdit(QTextEdit* textEdit)
{ {
@ -62,16 +58,16 @@ void MenuItemProducer::attachTextEdit(QTextEdit* textEdit)
textEdit->setContextMenuPolicy(Qt::CustomContextMenu); textEdit->setContextMenuPolicy(Qt::CustomContextMenu);
QObject::connect(textEdit, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotMenuItems(QPoint))); QObject::connect(textEdit, SIGNAL(customContextMenuRequested(QPoint)), this, SLOT(slotMenuItems(QPoint)));
} }
m_textEdit = textEdit; m_textEdit = textEdit;
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void MenuItemProducer::slotMenuItems(QPoint point) void MenuItemProducer::slotMenuItems(QPoint point)
{ {
QMenu menu; QMenu menu;
QAction act("Testing", this); QAction act("Testing", this);
connect(&act, SIGNAL(triggered()), SLOT(slotShowText())); connect(&act, SIGNAL(triggered()), SLOT(slotShowText()));
@ -89,13 +85,13 @@ void MenuItemProducer::slotMenuItems(QPoint point)
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void MenuItemProducer::slotShowText() void MenuItemProducer::slotShowText()
{ {
if (m_textEdit) if (m_textEdit)
{ {
QAction* action = qobject_cast<QAction *>(sender()); QAction* action = qobject_cast<QAction*>(sender());
if (action) if (action)
{ {
QTextCursor cursor = m_textEdit->textCursor(); QTextCursor cursor = m_textEdit->textCursor();

View File

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

View File

@ -2,23 +2,20 @@
#include "WidgetLayoutTest.h" #include "WidgetLayoutTest.h"
#include <QGridLayout> #include <QGridLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QGroupBox> #include <QGroupBox>
#include <QLabel> #include <QLabel>
#include <QLineEdit>
#include <QPushButton>
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*= 0*/) WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*= 0*/)
: QWidget(parent, f) : QWidget(parent, f)
{ {
QVBoxLayout* l = new QVBoxLayout; QVBoxLayout* l = new QVBoxLayout;
setLayout(l); setLayout(l);
{ {
QPushButton* b1 = new QPushButton("Original config", this); QPushButton* b1 = new QPushButton("Original config", this);
connect(b1, SIGNAL(clicked()), SLOT(setUpInitialConfiguration())); connect(b1, SIGNAL(clicked()), SLOT(setUpInitialConfiguration()));
@ -47,11 +44,11 @@ WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*
m_widget4 = new QLineEdit("4", this); m_widget4 = new QLineEdit("4", this);
m_widget5 = new QLineEdit("5", 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_groupBoxALayout = new QGridLayout();
m_groupBoxA->setLayout(m_groupBoxALayout); m_groupBoxA->setLayout(m_groupBoxALayout);
m_groupBoxB = new QGroupBox("Groupbox B", this); m_groupBoxB = new QGroupBox("Groupbox B", this);
m_groupBoxBLayout = new QGridLayout(); m_groupBoxBLayout = new QGridLayout();
m_groupBoxB->setLayout(m_groupBoxBLayout); m_groupBoxB->setLayout(m_groupBoxBLayout);
@ -59,22 +56,19 @@ WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
WidgetLayoutTest::~WidgetLayoutTest() WidgetLayoutTest::~WidgetLayoutTest() {}
{
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void WidgetLayoutTest::setUpInitialConfiguration() void WidgetLayoutTest::setUpInitialConfiguration()
{ {
m_mainLayout->addWidget(m_widget1); m_mainLayout->addWidget(m_widget1);
m_mainLayout->addWidget(m_groupBoxA); m_mainLayout->addWidget(m_groupBoxA);
m_groupBoxALayout->addWidget(m_widget2, 0, 0); m_groupBoxALayout->addWidget(m_widget2, 0, 0);
if (!m_widget3) if (!m_widget3)
{ {
@ -89,7 +83,7 @@ void WidgetLayoutTest::setUpInitialConfiguration()
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void WidgetLayoutTest::setUpInitialConfigurationA() void WidgetLayoutTest::setUpInitialConfigurationA()
{ {
@ -100,7 +94,7 @@ void WidgetLayoutTest::setUpInitialConfigurationA()
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void WidgetLayoutTest::setUpInitialConfigurationB() void WidgetLayoutTest::setUpInitialConfigurationB()
{ {

View File

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

View File

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

View File

@ -1,355 +1,346 @@
#include "MainWindow.h" #include "MainWindow.h"
#include "WidgetLayoutTest.h" #include "WidgetLayoutTest.h"
#include "cafAppEnum.h" #include "cafAppEnum.h"
#include "cafPdmField.h" #include "cafPdmField.h"
#include "cafPdmObject.h" #include "cafPdmObject.h"
#include "cafPdmObjectGroup.h" #include "cafPdmObjectGroup.h"
#include "cafPdmProxyValueField.h" #include "cafPdmProxyValueField.h"
#include "cafPdmPtrField.h" #include "cafPdmPtrField.h"
#include "cafPdmReferenceHelper.h" #include "cafPdmReferenceHelper.h"
#include "cafPdmUiFilePathEditor.h" #include "cafPdmUiFilePathEditor.h"
#include "cafPdmUiListEditor.h" #include "cafPdmUiListEditor.h"
#include "cafPdmUiPropertyView.h" #include "cafPdmUiPropertyView.h"
#include "cafPdmUiTableView.h" #include "cafPdmUiTableView.h"
#include "cafPdmUiTextEditor.h" #include "cafPdmUiTextEditor.h"
#include "cafPdmUiTreeView.h" #include "cafPdmUiTreeView.h"
#include "cafSelectionManager.h" #include "cafSelectionManager.h"
#include <QAction> #include <QAction>
#include <QDockWidget> #include <QDockWidget>
#include <QMenuBar> #include <QMenuBar>
#include <QTreeView> #include <QTreeView>
#include <QUndoView> #include <QUndoView>
#ifdef TAP_USE_COMMAND_FRAMEWORK #ifdef TAP_USE_COMMAND_FRAMEWORK
#include "cafCmdExecCommandManager.h" #include "cafCmdExecCommandManager.h"
#include "cafCmdSelectionHelper.h" #include "cafCmdFeatureManager.h"
#include "cafCmdFeatureManager.h" #include "cafCmdSelectionHelper.h"
#endif #endif
#include "TapProject.h" #include "TapProject.h"
MainWindow* MainWindow::sm_mainWindowInstance = NULL;
MainWindow* MainWindow::sm_mainWindowInstance = NULL;
//--------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------- ///
/// //--------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------- MainWindow::MainWindow()
MainWindow::MainWindow() {
{ // Initialize command framework
// Initialize command framework
// Register default command features (add/delete item in list)
// Register default command features (add/delete item in list)
createActions();
createActions(); createDockPanels();
createDockPanels();
buildTestModel();
buildTestModel(); setPdmRoot(m_project);
setPdmRoot(m_project);
sm_mainWindowInstance = this;
sm_mainWindowInstance = this; caf::SelectionManager::instance()->setPdmRootObject(m_project);
caf::SelectionManager::instance()->setPdmRootObject(m_project);
#ifdef TAP_USE_COMMAND_FRAMEWORK
#ifdef TAP_USE_COMMAND_FRAMEWORK caf::CmdExecCommandManager::instance()->enableUndoCommandSystem(true);
caf::CmdExecCommandManager::instance()->enableUndoCommandSystem(true); undoView->setStack(caf::CmdExecCommandManager::instance()->undoStack());
undoView->setStack(caf::CmdExecCommandManager::instance()->undoStack()); #endif
#endif }
} //--------------------------------------------------------------------------------------------------
///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// void MainWindow::createDockPanels()
//-------------------------------------------------------------------------------------------------- {
void MainWindow::createDockPanels() {
{ QDockWidget* dockWidget = new QDockWidget("PdmTreeView - controls property view", this);
{ dockWidget->setObjectName("dockWidget");
QDockWidget* dockWidget = new QDockWidget("PdmTreeView - controls property view", this); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
dockWidget->setObjectName("dockWidget");
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_pdmUiTreeView = new caf::PdmUiTreeView(dockWidget);
dockWidget->setWidget(m_pdmUiTreeView);
m_pdmUiTreeView = new caf::PdmUiTreeView(dockWidget);
dockWidget->setWidget(m_pdmUiTreeView); addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
}
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
} {
QDockWidget* dockWidget = new QDockWidget("cafPropertyView", this);
{ dockWidget->setObjectName("dockWidget");
QDockWidget* dockWidget = new QDockWidget("cafPropertyView", this); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
dockWidget->setObjectName("dockWidget");
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_pdmUiPropertyView = new caf::PdmUiPropertyView(dockWidget);
dockWidget->setWidget(m_pdmUiPropertyView);
m_pdmUiPropertyView = new caf::PdmUiPropertyView(dockWidget);
dockWidget->setWidget(m_pdmUiPropertyView); addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
}
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
} {
QDockWidget* dockWidget = new QDockWidget("PdmTreeView2 - controls table view", this);
{ dockWidget->setObjectName("dockWidget");
QDockWidget* dockWidget = new QDockWidget("PdmTreeView2 - controls table view", this); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
dockWidget->setObjectName("dockWidget");
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_pdmUiTreeView2 = new caf::PdmUiTreeView(dockWidget);
m_pdmUiTreeView2->enableDefaultContextMenu(true);
m_pdmUiTreeView2 = new caf::PdmUiTreeView(dockWidget); m_pdmUiTreeView2->enableSelectionManagerUpdating(true);
m_pdmUiTreeView2->enableDefaultContextMenu(true); dockWidget->setWidget(m_pdmUiTreeView2);
m_pdmUiTreeView2->enableSelectionManagerUpdating(true);
dockWidget->setWidget(m_pdmUiTreeView2); addDockWidget(Qt::RightDockWidgetArea, dockWidget);
}
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
} {
QDockWidget* dockWidget = new QDockWidget("cafTableView", this);
{ dockWidget->setObjectName("dockWidget");
QDockWidget* dockWidget = new QDockWidget("cafTableView", this); dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
dockWidget->setObjectName("dockWidget");
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); m_pdmUiTableView = new caf::PdmUiTableView(dockWidget);
m_pdmUiTableView->setSelectionRole(caf::SelectionManager::CURRENT);
m_pdmUiTableView = new caf::PdmUiTableView(dockWidget); m_pdmUiTableView->enableDefaultContextMenu(true);
m_pdmUiTableView->setSelectionRole(caf::SelectionManager::CURRENT);
m_pdmUiTableView->enableDefaultContextMenu(true); dockWidget->setWidget(m_pdmUiTableView);
dockWidget->setWidget(m_pdmUiTableView); addDockWidget(Qt::RightDockWidgetArea, dockWidget);
}
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
} {
QDockWidget* dockWidget = new QDockWidget("Undo stack", this);
dockWidget->setObjectName("dockWidget");
{ dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
QDockWidget* dockWidget = new QDockWidget("Undo stack", this);
dockWidget->setObjectName("dockWidget"); undoView = new QUndoView(this);
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); dockWidget->setWidget(undoView);
undoView = new QUndoView(this); addDockWidget(Qt::RightDockWidgetArea, dockWidget);
dockWidget->setWidget(undoView); }
}
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
} //--------------------------------------------------------------------------------------------------
///
} //--------------------------------------------------------------------------------------------------
void MainWindow::buildTestModel()
//-------------------------------------------------------------------------------------------------- {
/// m_project = new TapProject;
//-------------------------------------------------------------------------------------------------- }
void MainWindow::buildTestModel()
{ //--------------------------------------------------------------------------------------------------
m_project = new TapProject; ///
} //--------------------------------------------------------------------------------------------------
void MainWindow::setPdmRoot(caf::PdmObjectHandle* pdmRoot)
{
//-------------------------------------------------------------------------------------------------- caf::PdmUiObjectHandle* uiObject = uiObj(pdmRoot);
/// if (uiObject)
//-------------------------------------------------------------------------------------------------- {
void MainWindow::setPdmRoot(caf::PdmObjectHandle* pdmRoot) m_pdmUiTreeView->setPdmItem(uiObject);
{ }
caf::PdmUiObjectHandle* uiObject = uiObj(pdmRoot);
if (uiObject) connect(m_pdmUiTreeView, SIGNAL(selectionChanged()), SLOT(slotSimpleSelectionChanged()));
{
m_pdmUiTreeView->setPdmItem(uiObject); // Set up test of using a field as a root item
} // Hack, because we know that pdmRoot is a PdmObjectGroup ...
connect(m_pdmUiTreeView, SIGNAL(selectionChanged()), SLOT(slotSimpleSelectionChanged())); std::vector<caf::PdmFieldHandle*> fields;
pdmRoot->fields(fields);
// Set up test of using a field as a root item if (fields.size())
// Hack, because we know that pdmRoot is a PdmObjectGroup ... {
caf::PdmFieldHandle* field = fields[0];
std::vector<caf::PdmFieldHandle*> fields; caf::PdmUiFieldHandle* uiFieldHandle = field->uiCapability();
pdmRoot->fields(fields); if (uiFieldHandle)
if (fields.size()) {
{ m_pdmUiTreeView2->setPdmItem(uiFieldHandle);
caf::PdmFieldHandle* field = fields[0]; uiFieldHandle->updateConnectedEditors();
caf::PdmUiFieldHandle* uiFieldHandle = field->uiCapability(); }
if (uiFieldHandle) }
{
m_pdmUiTreeView2->setPdmItem(uiFieldHandle); if (uiObject)
uiFieldHandle->updateConnectedEditors(); {
} m_pdmUiTreeView2->setPdmItem(uiObject);
} }
if (uiObject) connect(m_pdmUiTreeView2, SIGNAL(selectionChanged()), SLOT(slotShowTableView()));
{ }
m_pdmUiTreeView2->setPdmItem(uiObject);
} //--------------------------------------------------------------------------------------------------
///
connect(m_pdmUiTreeView2, SIGNAL(selectionChanged()), SLOT(slotShowTableView())); //--------------------------------------------------------------------------------------------------
} MainWindow::~MainWindow()
{
//-------------------------------------------------------------------------------------------------- m_pdmUiTreeView->setPdmItem(NULL);
/// m_pdmUiTreeView2->setPdmItem(NULL);
//-------------------------------------------------------------------------------------------------- m_pdmUiPropertyView->showProperties(NULL);
MainWindow::~MainWindow() m_pdmUiTableView->setListField(NULL);
{ }
m_pdmUiTreeView->setPdmItem(NULL);
m_pdmUiTreeView2->setPdmItem(NULL); //--------------------------------------------------------------------------------------------------
m_pdmUiPropertyView->showProperties(NULL); ///
m_pdmUiTableView->setListField(NULL); //--------------------------------------------------------------------------------------------------
} void MainWindow::releaseTestData()
{
//-------------------------------------------------------------------------------------------------- if (m_project)
/// {
//-------------------------------------------------------------------------------------------------- delete m_project;
void MainWindow::releaseTestData() }
{ }
if (m_project)
{ //--------------------------------------------------------------------------------------------------
delete m_project; ///
} //--------------------------------------------------------------------------------------------------
} MainWindow* MainWindow::instance()
{
//-------------------------------------------------------------------------------------------------- return sm_mainWindowInstance;
/// }
//--------------------------------------------------------------------------------------------------
MainWindow* MainWindow::instance() //--------------------------------------------------------------------------------------------------
{ ///
return sm_mainWindowInstance; //--------------------------------------------------------------------------------------------------
} void MainWindow::createActions()
{
//-------------------------------------------------------------------------------------------------- // Create actions
/// QAction* editInsert = new QAction("&Insert", this);
//-------------------------------------------------------------------------------------------------- QAction* editRemove = new QAction("&Remove", this);
void MainWindow::createActions() QAction* editRemoveAll = new QAction("Remove all", this);
{
// Create actions connect(editInsert, SIGNAL(triggered()), SLOT(slotInsert()));
QAction* editInsert = new QAction("&Insert", this); connect(editRemove, SIGNAL(triggered()), SLOT(slotRemove()));
QAction* editRemove = new QAction("&Remove", this); connect(editRemoveAll, SIGNAL(triggered()), SLOT(slotRemoveAll()));
QAction* editRemoveAll = new QAction("Remove all", this);
// Create menus
connect(editInsert, SIGNAL(triggered()), SLOT(slotInsert())); QMenu* editMenu = menuBar()->addMenu("&Edit");
connect(editRemove, SIGNAL(triggered()), SLOT(slotRemove())); editMenu->addAction(editInsert);
connect(editRemoveAll, SIGNAL(triggered()), SLOT(slotRemoveAll())); editMenu->addAction(editRemove);
editMenu->addAction(editRemoveAll);
}
// Create menus
QMenu* editMenu = menuBar()->addMenu("&Edit"); //--------------------------------------------------------------------------------------------------
editMenu->addAction(editInsert); ///
editMenu->addAction(editRemove); //--------------------------------------------------------------------------------------------------
editMenu->addAction(editRemoveAll); void MainWindow::slotInsert()
} {
/*
//-------------------------------------------------------------------------------------------------- std::vector<caf::PdmUiItem*> selection;
/// m_pdmUiTreeView->selectedUiItems(selection);
//--------------------------------------------------------------------------------------------------
void MainWindow::slotInsert() for (size_t i = 0; i < selection.size(); ++i)
{ {
/* caf::PdmUiFieldHandle* uiFh = dynamic_cast<caf::PdmUiFieldHandle*>(selection[i]);
std::vector<caf::PdmUiItem*> selection; caf::PdmChildArrayField< caf::PdmObjectHandle*> * field = NULL;
m_pdmUiTreeView->selectedUiItems(selection);
if (uiFh) field = dynamic_cast<caf::PdmChildArrayField< caf::PdmObjectHandle*> *>(uiFh->fieldHandle());
for (size_t i = 0; i < selection.size(); ++i)
{ if (field)
caf::PdmUiFieldHandle* uiFh = dynamic_cast<caf::PdmUiFieldHandle*>(selection[i]); {
caf::PdmChildArrayField< caf::PdmObjectHandle*> * field = NULL; field->push_back(new DemoPdmObject);
field->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
if (uiFh) field = dynamic_cast<caf::PdmChildArrayField< caf::PdmObjectHandle*> *>(uiFh->fieldHandle());
return;
if (field) }
{ #if 0
field->push_back(new DemoPdmObject); caf::PdmChildArrayFieldHandle* listField = NULL;
field->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
if (uiFh) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(uiFh->fieldHandle());
return;
} if (listField)
#if 0 {
caf::PdmChildArrayFieldHandle* listField = NULL; caf::PdmObjectHandle* obj = listField->createAppendObject();
listField->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
if (uiFh) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(uiFh->fieldHandle()); }
#endif
if (listField) }
{ */
caf::PdmObjectHandle* obj = listField->createAppendObject(); }
listField->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
} //--------------------------------------------------------------------------------------------------
#endif ///
} //--------------------------------------------------------------------------------------------------
*/ void MainWindow::slotRemove()
} {
std::vector<caf::PdmUiItem*> selection;
//-------------------------------------------------------------------------------------------------- m_pdmUiTreeView->selectedUiItems(selection);
///
//-------------------------------------------------------------------------------------------------- for (size_t i = 0; i < selection.size(); ++i)
void MainWindow::slotRemove() {
{ caf::PdmObjectHandle* obj = dynamic_cast<caf::PdmObjectHandle*>(selection[i]);
std::vector<caf::PdmUiItem*> selection; if (obj)
m_pdmUiTreeView->selectedUiItems(selection); {
caf::PdmFieldHandle* field = obj->parentField();
for (size_t i = 0; i < selection.size(); ++i)
{ // Ordering is important
caf::PdmObjectHandle* obj = dynamic_cast< caf::PdmObjectHandle*>(selection[i]);
if (obj) field->removeChildObject(obj);
{
caf::PdmFieldHandle* field = obj->parentField(); // Delete object
delete obj;
// Ordering is important
// Update editors
field->removeChildObject(obj); field->uiCapability()->updateConnectedEditors();
// Delete object break;
delete obj; }
}
// Update editors }
field->uiCapability()->updateConnectedEditors();
//--------------------------------------------------------------------------------------------------
break; ///
} //--------------------------------------------------------------------------------------------------
} void MainWindow::slotRemoveAll() {}
}
//--------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------- ///
/// //--------------------------------------------------------------------------------------------------
//-------------------------------------------------------------------------------------------------- void MainWindow::slotSimpleSelectionChanged()
void MainWindow::slotRemoveAll() {
{ std::vector<caf::PdmUiItem*> selection;
m_pdmUiTreeView->selectedUiItems(selection);
} caf::PdmObjectHandle* obj = NULL;
caf::PdmChildArrayFieldHandle* listField = NULL;
//--------------------------------------------------------------------------------------------------
/// if (selection.size())
//-------------------------------------------------------------------------------------------------- {
void MainWindow::slotSimpleSelectionChanged() caf::PdmUiObjectHandle* pdmUiObj = dynamic_cast<caf::PdmUiObjectHandle*>(selection[0]);
{ if (pdmUiObj) obj = pdmUiObj->objectHandle();
std::vector<caf::PdmUiItem*> selection; }
m_pdmUiTreeView->selectedUiItems(selection);
caf::PdmObjectHandle* obj = NULL; m_pdmUiPropertyView->showProperties(obj);
caf::PdmChildArrayFieldHandle* listField = NULL; }
if (selection.size()) //--------------------------------------------------------------------------------------------------
{ ///
caf::PdmUiObjectHandle* pdmUiObj = dynamic_cast<caf::PdmUiObjectHandle*>( selection[0] ); //--------------------------------------------------------------------------------------------------
if (pdmUiObj) obj = pdmUiObj->objectHandle(); void MainWindow::slotShowTableView()
} {
std::vector<caf::PdmUiItem*> selection;
m_pdmUiPropertyView->showProperties(obj); m_pdmUiTreeView2->selectedUiItems(selection);
} caf::PdmObjectHandle* obj = NULL;
caf::PdmChildArrayFieldHandle* listField = NULL;
//--------------------------------------------------------------------------------------------------
/// if (selection.size())
//-------------------------------------------------------------------------------------------------- {
void MainWindow::slotShowTableView() caf::PdmUiItem* pdmUiItem = selection[0];
{
std::vector<caf::PdmUiItem*> selection; caf::PdmUiFieldHandle* guiField = dynamic_cast<caf::PdmUiFieldHandle*>(pdmUiItem);
m_pdmUiTreeView2->selectedUiItems(selection);
caf::PdmObjectHandle* obj = NULL; if (guiField) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(guiField->fieldHandle());
caf::PdmChildArrayFieldHandle* listField = NULL;
if (listField)
if (selection.size()) {
{ if (!listField->hasSameFieldCountForAllObjects())
caf::PdmUiItem* pdmUiItem = selection[0]; {
listField = NULL;
caf::PdmUiFieldHandle* guiField = dynamic_cast<caf::PdmUiFieldHandle*>(pdmUiItem); }
}
if (guiField) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(guiField->fieldHandle()); }
if (listField) m_pdmUiTableView->setListField(listField);
{
if (!listField->hasSameFieldCountForAllObjects()) if (listField)
{ {
listField = NULL; listField->uiCapability()->updateConnectedEditors();
} }
} }
}
m_pdmUiTableView->setListField(listField);
if (listField)
{
listField->uiCapability()->updateConnectedEditors();
}
}

View File

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

View File

@ -2,13 +2,10 @@
#include "cafPdmUiListEditor.h" #include "cafPdmUiListEditor.h"
CAF_PDM_SOURCE_INIT(TapCvfSpecialization, "TapCvfSpecialization"); CAF_PDM_SOURCE_INIT(TapCvfSpecialization, "TapCvfSpecialization");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
TapCvfSpecialization::TapCvfSpecialization() TapCvfSpecialization::TapCvfSpecialization()
{ {
@ -24,9 +21,11 @@ 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) if (changedField == &m_colorField)
{ {
@ -35,9 +34,11 @@ 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) if (field == &m_vecArrayField)
{ {
@ -48,4 +49,3 @@ void TapCvfSpecialization::defineEditorAttribute(const caf::PdmFieldHandle* fiel
} }
} }
} }

View File

@ -1,42 +1,38 @@
#pragma once #pragma once
#include "cvfBase.h" #include "cvfBase.h"
#include "cvfColor3.h" #include "cvfColor3.h"
#include "cvfVector3.h"
#include "cvfMatrix4.h" #include "cvfMatrix4.h"
#include "cvfVector3.h"
#include "cafPdmFieldCvfColor.h" #include "cafPdmFieldCvfColor.h"
#include "cafPdmFieldCvfVec3d.h"
#include "cafPdmFieldCvfMat4d.h" #include "cafPdmFieldCvfMat4d.h"
#include "cafPdmFieldCvfVec3d.h"
#include "cafPdmObject.h"
#include "cafPdmField.h" #include "cafPdmField.h"
#include "cafPdmObject.h"
#include <vector> #include <vector>
class TapCvfSpecialization : public caf::PdmObject class TapCvfSpecialization : public caf::PdmObject
{ {
CAF_PDM_HEADER_INIT; CAF_PDM_HEADER_INIT;
public: public:
TapCvfSpecialization(); TapCvfSpecialization();
caf::PdmField<QString> m_testField; caf::PdmField<QString> m_testField;
caf::PdmField<cvf::Color3f> m_colorField; caf::PdmField<cvf::Color3f> m_colorField;
caf::PdmField<cvf::Vec3d> m_vectorField; caf::PdmField<cvf::Vec3d> m_vectorField;
caf::PdmField<cvf::Mat4d> m_matrixField; caf::PdmField<cvf::Mat4d> m_matrixField;
caf::PdmField< std::vector< cvf::Vec3d> > m_vecArrayField; caf::PdmField<std::vector<cvf::Vec3d>> m_vecArrayField;
public: public:
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);
protected: 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

@ -4,7 +4,7 @@
CAF_PDM_SOURCE_INIT(TapProject, "RPMProject"); CAF_PDM_SOURCE_INIT(TapProject, "RPMProject");
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
TapProject::TapProject(void) TapProject::TapProject(void)
{ {
@ -15,9 +15,6 @@ TapProject::TapProject(void)
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
TapProject::~TapProject(void) TapProject::~TapProject(void) {}
{
}

View File

@ -1,13 +1,11 @@
#pragma once #pragma once
#include "cafPdmDocument.h"
#include "cafPdmChildArrayField.h" #include "cafPdmChildArrayField.h"
#include "cafPdmChildField.h" #include "cafPdmChildField.h"
#include "cafPdmDocument.h"
class TapCvfSpecialization; class TapCvfSpecialization;
class TapProject : public caf::PdmDocument class TapProject : public caf::PdmDocument
{ {
CAF_PDM_HEADER_INIT; CAF_PDM_HEADER_INIT;
@ -16,7 +14,7 @@ public:
TapProject(void); TapProject(void);
virtual ~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,23 +2,20 @@
#include "WidgetLayoutTest.h" #include "WidgetLayoutTest.h"
#include <QGridLayout> #include <QGridLayout>
#include <QLineEdit>
#include <QPushButton>
#include <QGroupBox> #include <QGroupBox>
#include <QLabel> #include <QLabel>
#include <QLineEdit>
#include <QPushButton>
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*= 0*/) WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*= 0*/)
: QWidget(parent, f) : QWidget(parent, f)
{ {
QVBoxLayout* l = new QVBoxLayout; QVBoxLayout* l = new QVBoxLayout;
setLayout(l); setLayout(l);
{ {
QPushButton* b1 = new QPushButton("Original config", this); QPushButton* b1 = new QPushButton("Original config", this);
connect(b1, SIGNAL(clicked()), SLOT(setUpInitialConfiguration())); connect(b1, SIGNAL(clicked()), SLOT(setUpInitialConfiguration()));
@ -47,11 +44,11 @@ WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*
m_widget4 = new QLineEdit("4", this); m_widget4 = new QLineEdit("4", this);
m_widget5 = new QLineEdit("5", 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_groupBoxALayout = new QGridLayout();
m_groupBoxA->setLayout(m_groupBoxALayout); m_groupBoxA->setLayout(m_groupBoxALayout);
m_groupBoxB = new QGroupBox("Groupbox B", this); m_groupBoxB = new QGroupBox("Groupbox B", this);
m_groupBoxBLayout = new QGridLayout(); m_groupBoxBLayout = new QGridLayout();
m_groupBoxB->setLayout(m_groupBoxBLayout); m_groupBoxB->setLayout(m_groupBoxBLayout);
@ -59,22 +56,19 @@ WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
WidgetLayoutTest::~WidgetLayoutTest() WidgetLayoutTest::~WidgetLayoutTest() {}
{
}
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void WidgetLayoutTest::setUpInitialConfiguration() void WidgetLayoutTest::setUpInitialConfiguration()
{ {
m_mainLayout->addWidget(m_widget1); m_mainLayout->addWidget(m_widget1);
m_mainLayout->addWidget(m_groupBoxA); m_mainLayout->addWidget(m_groupBoxA);
m_groupBoxALayout->addWidget(m_widget2, 0, 0); m_groupBoxALayout->addWidget(m_widget2, 0, 0);
if (!m_widget3) if (!m_widget3)
{ {
@ -89,7 +83,7 @@ void WidgetLayoutTest::setUpInitialConfiguration()
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void WidgetLayoutTest::setUpInitialConfigurationA() void WidgetLayoutTest::setUpInitialConfigurationA()
{ {
@ -100,7 +94,7 @@ void WidgetLayoutTest::setUpInitialConfigurationA()
} }
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
/// ///
//-------------------------------------------------------------------------------------------------- //--------------------------------------------------------------------------------------------------
void WidgetLayoutTest::setUpInitialConfigurationB() void WidgetLayoutTest::setUpInitialConfigurationB()
{ {

View File

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

View File

@ -354,6 +354,26 @@ void PdmUiTreeSelectionEditor::configureAndUpdateUi(const QString& uiConfigName)
m_treeView->setRootIsDecorated(m_model->hasGrandChildren()); m_treeView->setRootIsDecorated(m_model->hasGrandChildren());
m_model->resetUiValueCache(); 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); 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) if (uiFieldHandle)
{ {
QVariant v = m_proxyModel->data(current, PdmUiTreeSelectionQModel::optionItemValueRole()); QVariant v = m_proxyModel->data(current, PdmUiTreeSelectionQModel::optionItemValueRole());

View File

@ -64,11 +64,11 @@ public:
bool singleSelectionMode; bool singleSelectionMode;
bool setCurrentIndexWhenItemIsChecked; 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 /// 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 /// 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 /// 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: public:
PdmUiTreeSelectionEditorAttribute() PdmUiTreeSelectionEditorAttribute()
@ -78,7 +78,7 @@ public:
singleSelectionMode = false; singleSelectionMode = false;
setCurrentIndexWhenItemIsChecked = false; setCurrentIndexWhenItemIsChecked = false;
fieldToReceiveCurrentItemValue = nullptr; currentIndexFieldHandle = nullptr;
} }
}; };