diff --git a/Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.cpp b/Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.cpp index 1070ca1279..08a3f90ad3 100644 --- a/Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.cpp +++ b/Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.cpp @@ -1,24 +1,9 @@ - -#include "cafPdmField.h" - #include "MainWindow.h" + #include "WidgetLayoutTest.h" -#include -#include -#include -#include -#include - - #include "cafAppEnum.h" - -#ifdef TAP_USE_COMMAND_FRAMEWORK -#include "cafCmdExecCommandManager.h" -#include "cafCmdSelectionHelper.h" -#include "cafCmdFeatureManager.h" -#endif - +#include "cafPdmField.h" #include "cafPdmObject.h" #include "cafPdmObjectGroup.h" #include "cafPdmProxyValueField.h" @@ -32,329 +17,18 @@ #include "cafPdmUiTreeView.h" #include "cafSelectionManager.h" - - -class DemoPdmObjectGroup : public caf::PdmObjectCollection -{ - CAF_PDM_HEADER_INIT; -public: - - DemoPdmObjectGroup() - { - objects.uiCapability()->setUiHidden(true); - - } -}; - -CAF_PDM_SOURCE_INIT(DemoPdmObjectGroup, "DemoPdmObjectGroup"); - -class SmallDemoPdmObject: public caf::PdmObject -{ - CAF_PDM_HEADER_INIT; -public: - - SmallDemoPdmObject() - { - CAF_PDM_InitObject("Small Demo Object", ":/images/win/filenew.png", "This object is a demo of the CAF framework", "This object is a demo of the CAF framework"); - - CAF_PDM_InitField(&m_toggleField, "Toggle", false, "Toggle Field", "", "Toggle Field tooltip", " Toggle Field whatsthis"); - CAF_PDM_InitField(&m_doubleField, "BigNumber", 0.0, "Big Number", "", "Enter a big number here", "This is a place you can enter a big real value if you want" ); - CAF_PDM_InitField(&m_intField, "IntNumber", 0, "Small Number", "", "Enter some small number here", "This is a place you can enter a small integer value if you want"); - CAF_PDM_InitField(&m_textField, "TextField", QString(""), "Text", "", "Text tooltip", "This is a place you can enter a small integer value if you want"); - - m_proxyDoubleField.registerSetMethod(this, &SmallDemoPdmObject::setDoubleMember); - m_proxyDoubleField.registerGetMethod(this, &SmallDemoPdmObject::doubleMember); - CAF_PDM_InitFieldNoDefault(&m_proxyDoubleField, "ProxyDouble", "Proxy Double", "", "", ""); - - m_proxyDoubleField = 0; - if (!(m_proxyDoubleField == 3)) { std::cout << "Double is not 3 " << std::endl; } - - } - - - caf::PdmField m_doubleField; - caf::PdmField m_intField; - caf::PdmField m_textField; - caf::PdmProxyValueField m_proxyDoubleField; - - caf::PdmField m_toggleField; - virtual caf::PdmFieldHandle* objectToggleField() - { - return &m_toggleField; - } - - virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) - { - if (changedField == &m_toggleField) - { - std::cout << "Toggle Field changed" << std::endl; - } - } - - void setDoubleMember(const double& d) { m_doubleMember = d; std::cout << "setDoubleMember" << std::endl; } - double doubleMember() const { std::cout << "doubleMember" << std::endl; return m_doubleMember; } - -private: - double m_doubleMember; - -}; - -CAF_PDM_SOURCE_INIT(SmallDemoPdmObject, "SmallDemoPdmObject"); - - -class SmallDemoPdmObjectA: public caf::PdmObject -{ - CAF_PDM_HEADER_INIT; -public: - - enum TestEnumType - { - T1, T2, T3 - }; - - - SmallDemoPdmObjectA() - { - CAF_PDM_InitObject("Small Demo Object A", "", "This object is a demo of the CAF framework", "This object is a demo of the CAF framework"); - - CAF_PDM_InitField(&m_toggleField, "Toggle", false, "Toggle Field", "", "Toggle Field tooltip", " Toggle Field whatsthis"); - CAF_PDM_InitField(&m_doubleField, "BigNumber", 0.0, "Big Number", "", "Enter a big number here", "This is a place you can enter a big real value if you want"); - CAF_PDM_InitField(&m_intField, "IntNumber", 0, "Small Number", "", "Enter some small number here","This is a place you can enter a small integer value if you want"); - CAF_PDM_InitField(&m_textField, "TextField", QString("Small Demo Object A"), "Name Text Field", "", "", ""); - CAF_PDM_InitField(&m_testEnumField, "TestEnumValue", caf::AppEnum(T1), "EnumField", "", "", ""); - CAF_PDM_InitFieldNoDefault(&m_ptrField, "m_ptrField", "PtrField", "", "", ""); - - CAF_PDM_InitFieldNoDefault(&m_proxyEnumField, "ProxyEnumValue", "ProxyEnum", "", "", ""); - m_proxyEnumField.registerSetMethod(this, &SmallDemoPdmObjectA::setEnumMember); - m_proxyEnumField.registerGetMethod(this, &SmallDemoPdmObjectA::enumMember); - m_proxyEnumMember = T2; - - m_testEnumField.capability()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName()); - } - - caf::PdmField m_doubleField; - caf::PdmField m_intField; - caf::PdmField m_textField; - caf::PdmField< caf::AppEnum > m_testEnumField; - caf::PdmPtrField m_ptrField; - - caf::PdmProxyValueField< caf::AppEnum > m_proxyEnumField; - void setEnumMember(const caf::AppEnum& val) { m_proxyEnumMember = val; } - caf::AppEnum enumMember() const { return m_proxyEnumMember; } - TestEnumType m_proxyEnumMember; - - - - caf::PdmField m_toggleField; - virtual caf::PdmFieldHandle* objectToggleField() - { - return &m_toggleField; - } - - virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) - { - if (changedField == &m_toggleField) - { - std::cout << "Toggle Field changed" << std::endl; - } - } - - virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) - { - QList options; - - - if (&m_ptrField == fieldNeedingOptions) - { - caf::PdmFieldHandle* field; - std::vector objects; - field = this->parentField(); - - field->childObjects(&objects); - - for (size_t i = 0; i < objects.size(); ++i) - { - QString userDesc; - - caf::PdmUiObjectHandle* uiObject = caf::uiObj(objects[i]); - if (uiObject) - { - if (uiObject->userDescriptionField()) - { - caf::PdmUiFieldHandle* uiFieldHandle = uiObject->userDescriptionField()->uiCapability(); - if (uiFieldHandle) - { - userDesc = uiFieldHandle->uiValue().toString(); - } - } - - options.push_back(caf::PdmOptionItemInfo(uiObject->uiName() + "(" + userDesc + ")", QVariant::fromValue(caf::PdmPointer(objects[i])))); - } - } - } - - if (useOptionsOnly) *useOptionsOnly = true; - - return options; - } - - //-------------------------------------------------------------------------------------------------- - /// - //-------------------------------------------------------------------------------------------------- - virtual caf::PdmFieldHandle* userDescriptionField() - { - return &m_textField; - } - -}; - -CAF_PDM_SOURCE_INIT(SmallDemoPdmObjectA, "SmallDemoPdmObjectA"); - -namespace caf -{ - template<> - void AppEnum::setUp() - { - addItem(SmallDemoPdmObjectA::T1, "T1", "An A letter"); - addItem(SmallDemoPdmObjectA::T2, "T2", "A B letter"); - addItem(SmallDemoPdmObjectA::T3, "T3", "A B C letter"); - setDefault(SmallDemoPdmObjectA::T1); - - } - -} -Q_DECLARE_METATYPE(caf::AppEnum); - - - - -class DemoPdmObject: public caf::PdmObject -{ - CAF_PDM_HEADER_INIT; -public: - - DemoPdmObject() - { - CAF_PDM_InitObject( "Demo Object", "", "This object is a demo of the CAF framework", "This object is a demo of the CAF framework"); - - CAF_PDM_InitField(&m_toggleField, "Toggle", false, "Toggle Field", "", "Toggle Field tooltip", " Toggle Field whatsthis"); - CAF_PDM_InitField(&m_doubleField, "BigNumber", 0.0, "Big Number", "", "Enter a big number here", "This is a place you can enter a big real value if you want"); - CAF_PDM_InitField(&m_intField, "IntNumber", 0, "Small Number", "", "Enter some small number here", "This is a place you can enter a small integer value if you want" ); - CAF_PDM_InitField(&m_boolField, "BooleanValue", false, "Boolean:" , "", "Boolean:Enter some small number here", "Boolean:This is a place you can enter a small integer value if you want"); - CAF_PDM_InitField(&m_textField, "TextField", QString("Demo Object Description Field"), "", "", "", ""); - CAF_PDM_InitField(&m_filePath, "FilePath", QString(""), "Filename", "", "", ""); - CAF_PDM_InitField(&m_longText, "LongText", QString("Test text"), "Long Text", "", "", ""); - - CAF_PDM_InitFieldNoDefault(&m_multiSelectList, "MultiSelect", "Selection List", "", "List" , "This is a multi selection list" ); - CAF_PDM_InitFieldNoDefault(&m_objectList, "ObjectList", "Objects list Field", "", "List" , "This is a list of PdmObjects" ); - CAF_PDM_InitFieldNoDefault(&m_objectListOfSameType, "m_objectListOfSameType", "Same type Objects list Field", "", "Same type List" , "Same type list of PdmObjects" ); - CAF_PDM_InitFieldNoDefault(&m_ptrField, "m_ptrField", "PtrField", "", "Same type List", "Same type list of PdmObjects"); - - m_filePath.capability()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName()); - m_filePath.capability()->setUiLabelPosition(caf::PdmUiItemInfo::TOP); - m_longText.capability()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName()); - m_longText.capability()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN); - - } - - //-------------------------------------------------------------------------------------------------- - /// - //-------------------------------------------------------------------------------------------------- - virtual void defineUiOrdering(QString uiConfigName, caf::PdmUiOrdering& uiOrdering) - { - uiOrdering.add(&m_ptrField); - uiOrdering.add(&m_boolField); - caf::PdmUiGroup* group1 = uiOrdering.addNewGroup("Name1"); - group1->add(&m_doubleField); - caf::PdmUiGroup* group2 = uiOrdering.addNewGroup("Name2"); - group2->add(&m_intField); - caf::PdmUiGroup* group3 = group2->addNewGroup("Name3"); - group3->add(&m_textField); - - //uiConfig->add(&f3); - //uiConfig->forgetRemainingFields(); - } - - //-------------------------------------------------------------------------------------------------- - /// - //-------------------------------------------------------------------------------------------------- - virtual QList calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly) - { - QList options; - if (&m_multiSelectList == fieldNeedingOptions) - { - - options.push_back(caf::PdmOptionItemInfo("Choice 1", "Choice1")); - options.push_back(caf::PdmOptionItemInfo("Choice 2", "Choice2")); - options.push_back(caf::PdmOptionItemInfo("Choice 3", "Choice3")); - options.push_back(caf::PdmOptionItemInfo("Choice 4", "Choice4")); - options.push_back(caf::PdmOptionItemInfo("Choice 5", "Choice5")); - options.push_back(caf::PdmOptionItemInfo("Choice 6", "Choice6")); - - } - - if (&m_ptrField == fieldNeedingOptions) - { - for (size_t i = 0; i < m_objectListOfSameType.size(); ++i) - { - caf::PdmUiObjectHandle* uiObject = caf::uiObj(m_objectListOfSameType[i]); - if (uiObject) - { - options.push_back(caf::PdmOptionItemInfo(uiObject->uiName(), QVariant::fromValue(caf::PdmPointer(m_objectListOfSameType[i])))); - } - } - } - - if (useOptionsOnly) *useOptionsOnly = true; - - return options; - } - - //-------------------------------------------------------------------------------------------------- - /// - //-------------------------------------------------------------------------------------------------- - virtual caf::PdmFieldHandle* userDescriptionField() - { - return &m_textField; - } - - - - // Fields - caf::PdmField m_boolField; - caf::PdmField m_doubleField; - caf::PdmField m_intField; - caf::PdmField m_textField; - - caf::PdmField m_filePath; - - caf::PdmField m_longText; - caf::PdmField > m_multiSelectList; - - - caf::PdmChildArrayField< caf::PdmObjectHandle* > m_objectList; - caf::PdmChildArrayField< SmallDemoPdmObjectA* > m_objectListOfSameType; - caf::PdmPtrField m_ptrField; - - - caf::PdmField m_toggleField; - virtual caf::PdmFieldHandle* objectToggleField() - { - return &m_toggleField; - } - - virtual void fieldChangedByUi(const caf::PdmFieldHandle* changedField, const QVariant& oldValue, const QVariant& newValue) - { - if (changedField == &m_toggleField) - { - std::cout << "Toggle Field changed" << std::endl; - } - } - -}; - -CAF_PDM_SOURCE_INIT(DemoPdmObject, "DemoPdmObject"); - +#include +#include +#include +#include +#include + +#ifdef TAP_USE_COMMAND_FRAMEWORK +#include "cafCmdExecCommandManager.h" +#include "cafCmdSelectionHelper.h" +#include "cafCmdFeatureManager.h" +#endif +#include "TapProject.h" MainWindow* MainWindow::sm_mainWindowInstance = NULL; @@ -372,10 +46,10 @@ MainWindow::MainWindow() createDockPanels(); buildTestModel(); - setPdmRoot(m_testRoot); + setPdmRoot(m_project); sm_mainWindowInstance = this; - caf::SelectionManager::instance()->setPdmRootObject(m_testRoot); + caf::SelectionManager::instance()->setPdmRootObject(m_project); #ifdef TAP_USE_COMMAND_FRAMEWORK caf::CmdExecCommandManager::instance()->enableUndoCommandSystem(true); @@ -457,37 +131,7 @@ void MainWindow::createDockPanels() //-------------------------------------------------------------------------------------------------- void MainWindow::buildTestModel() { - m_testRoot = new DemoPdmObjectGroup; - - DemoPdmObject* demoObject = new DemoPdmObject; - m_testRoot->objects.push_back(demoObject); - - SmallDemoPdmObject* smallObj1 = new SmallDemoPdmObject; - m_testRoot->objects.push_back(smallObj1); - - SmallDemoPdmObjectA* smallObj2 = new SmallDemoPdmObjectA; - m_testRoot->objects.push_back(smallObj2); - - DemoPdmObject* demoObj2 = new DemoPdmObject; - - demoObject->m_textField = "Mitt Demo Obj"; - demoObject->m_objectList.push_back(demoObj2); - demoObject->m_objectList.push_back(new SmallDemoPdmObjectA()); - SmallDemoPdmObject* smallObj3 = new SmallDemoPdmObject(); - demoObject->m_objectList.push_back(smallObj3); - demoObject->m_objectList.push_back(new SmallDemoPdmObject()); - - demoObject->m_objectListOfSameType.push_back(new SmallDemoPdmObjectA()); - demoObject->m_objectListOfSameType.push_back(new SmallDemoPdmObjectA()); - demoObject->m_objectListOfSameType.push_back(new SmallDemoPdmObjectA()); - demoObject->m_objectListOfSameType.push_back(new SmallDemoPdmObjectA()); - - - demoObj2->m_objectList.push_back(new SmallDemoPdmObjectA()); - demoObj2->m_objectList.push_back(new SmallDemoPdmObjectA()); - demoObj2->m_objectList.push_back(new SmallDemoPdmObject()); - - delete smallObj3; + m_project = new TapProject; } @@ -544,10 +188,9 @@ MainWindow::~MainWindow() //-------------------------------------------------------------------------------------------------- void MainWindow::releaseTestData() { - if (m_testRoot) + if (m_project) { - m_testRoot->objects.deleteAllChildObjects(); - delete m_testRoot; + delete m_project; } } @@ -586,6 +229,7 @@ void MainWindow::createActions() //-------------------------------------------------------------------------------------------------- void MainWindow::slotInsert() { +/* std::vector selection; m_pdmUiTreeView->selectedUiItems(selection); @@ -615,6 +259,7 @@ void MainWindow::slotInsert() } #endif } +*/ } //-------------------------------------------------------------------------------------------------- diff --git a/Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.h b/Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.h index b9728a6824..afa9d3ad56 100644 --- a/Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.h +++ b/Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.h @@ -1,13 +1,15 @@ #pragma once -#include +#include #include #include -class DemoPdmObject; class QTreeView; class QUndoView; +class TapProject; + + namespace caf { class PdmObjectCollection; @@ -58,6 +60,7 @@ private: caf::PdmUiTreeView* m_pdmUiTreeView2; caf::PdmUiPropertyView* m_pdmUiPropertyView; caf::PdmUiTableView* m_pdmUiTableView; - caf::PdmObjectCollection* m_testRoot; + + TapProject* m_project; }; diff --git a/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapCvfSpecialization.cpp b/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapCvfSpecialization.cpp index d7314cd68b..d11f8ae999 100644 --- a/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapCvfSpecialization.cpp +++ b/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapCvfSpecialization.cpp @@ -18,4 +18,5 @@ TapCvfSpecialization::TapCvfSpecialization() CAF_PDM_InitFieldNoDefault(&m_vecArrayField, "Points", "Selected points", "", "", ""); + m_vecArrayField.v().push_back(cvf::Vec3d(1, 2, 3)); } diff --git a/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.cpp b/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.cpp index 39df038a32..22fe1c2e1d 100644 --- a/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.cpp +++ b/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.cpp @@ -1,4 +1,5 @@ #include "TapProject.h" +#include "TapCvfSpecialization.h" CAF_PDM_SOURCE_INIT(TapProject, "RPMProject"); @@ -9,6 +10,8 @@ TapProject::TapProject(void) { CAF_PDM_InitFieldNoDefault(&m_objectList, "ObjectList", "Objects list Field", "", "List", "This is a list of PdmObjects"); + CAF_PDM_InitFieldNoDefault(&m_testSpecialization, "TapCvfSpecialization", "TapCvfSpecialization Field", "", "", ""); + m_testSpecialization = new TapCvfSpecialization; } //-------------------------------------------------------------------------------------------------- diff --git a/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.h b/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.h index 9ce03e4c9b..ac27ea67ee 100644 --- a/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.h +++ b/Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.h @@ -1,7 +1,11 @@ #pragma once + #include "cafPdmDocument.h" #include "cafPdmChildArrayField.h" +#include "cafPdmChildField.h" + +class TapCvfSpecialization; class TapProject : public caf::PdmDocument @@ -14,4 +18,5 @@ public: caf::PdmChildArrayField< caf::PdmObjectHandle* > m_objectList; + caf::PdmChildField< TapCvfSpecialization* > m_testSpecialization; }; \ No newline at end of file