Copied in RPM/Fwk/AppFwk
Commented out use of stipple line, as VizFwk is not update yet
@@ -1,30 +1,46 @@
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
|
||||
find_package ( Qt4 COMPONENTS QtCore QtGui )
|
||||
include (${QT_USE_FILE})
|
||||
|
||||
project ( cafProjectDataModel_UnitTests )
|
||||
|
||||
include_directories (
|
||||
${CMAKE_SOURCE_DIR}/cafProjectDataModel
|
||||
${CMAKE_SOURCE_DIR}/cafTests
|
||||
|
||||
#Remove when RigStatistics is out
|
||||
${ResInsight_SOURCE_DIR}/ApplicationCode/ModelVisualization
|
||||
)
|
||||
|
||||
# add the executable
|
||||
add_executable (${PROJECT_NAME}
|
||||
include_directories (
|
||||
${cafPdmCore_SOURCE_DIR}
|
||||
${cafPdmUiCore_SOURCE_DIR}
|
||||
${cafPdmXml_SOURCE_DIR}
|
||||
)
|
||||
|
||||
set( PROJECT_FILES
|
||||
cafPdmBasicTest.cpp
|
||||
cafProjectDataModel_UnitTests.cpp
|
||||
Child.cpp
|
||||
Parent.cpp
|
||||
TestObj.cpp
|
||||
|
||||
)
|
||||
|
||||
# add the executable
|
||||
add_executable (${PROJECT_NAME}
|
||||
${PROJECT_FILES}
|
||||
${CMAKE_SOURCE_DIR}/cafTests/gtest/gtest-all.cpp
|
||||
)
|
||||
message(${PROJECT_NAME}" - Qt includes : " ${QT_LIBRARIES})
|
||||
|
||||
target_link_libraries ( ${PROJECT_NAME}
|
||||
cafPdmCore
|
||||
cafPdmUiCore
|
||||
cafPdmXml
|
||||
cafProjectDataModel
|
||||
${QT_LIBRARIES}
|
||||
${QT_LIBRARIES}
|
||||
)
|
||||
|
||||
source_group("" FILES ${PROJECT_FILES})
|
||||
|
||||
# Copy Qt Dlls
|
||||
if (MSVC)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmChildField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmPointer.h"
|
||||
|
||||
@@ -16,7 +16,7 @@ public:
|
||||
~Child();
|
||||
|
||||
|
||||
caf::PdmField<TestObj*> m_testObj;
|
||||
caf::PdmChildField<TestObj*> m_testObj;
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -1,11 +1,12 @@
|
||||
#include "Child.h"
|
||||
#include "Parent.h"
|
||||
//#include "Child.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT(Parent, "Parent");
|
||||
|
||||
|
||||
Parent::Parent()
|
||||
{
|
||||
CAF_PDM_InitObject("Parent", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjectsField, "SimpleObjects", "A child object", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjectF, "SimpleObject", "A child object", "", "", "");
|
||||
}
|
||||
|
||||
@@ -1,8 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmChildField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmPointer.h"
|
||||
#include "cafPdmChildArrayField.h"
|
||||
|
||||
#if 0
|
||||
class PdmPointerTarget
|
||||
@@ -47,6 +48,6 @@ public:
|
||||
|
||||
void doSome();
|
||||
|
||||
caf::PdmPointersField<Child*> m_simpleObjectsField;
|
||||
caf::PdmField<Child*> m_simpleObjectF;
|
||||
caf::PdmChildArrayField<Child*> m_simpleObjectsField;
|
||||
caf::PdmChildField<Child*> m_simpleObjectF;
|
||||
};
|
||||
|
||||
@@ -42,9 +42,12 @@
|
||||
#include "cafPdmPointer.h"
|
||||
#include "cafPdmDocument.h"
|
||||
|
||||
#include "cafPdmChildField.h"
|
||||
#include "cafAppEnum.h"
|
||||
#include <memory>
|
||||
#include <QFile>
|
||||
#include "cafPdmReferenceHelper.h"
|
||||
#include "cafPdmProxyValueField.h"
|
||||
|
||||
|
||||
/// Demo objects to show the usage of the Pdm system
|
||||
@@ -54,25 +57,33 @@ class SimpleObj: public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
public:
|
||||
SimpleObj()
|
||||
SimpleObj() : PdmObject()
|
||||
{
|
||||
CAF_PDM_InitObject("Simple Object", "", "", "");
|
||||
CAF_PDM_InitObject("SimpleObj", "", "Tooltip SimpleObj", "WhatsThis SimpleObj");
|
||||
|
||||
CAF_PDM_InitField(&m_position, "Position", 8765.2, "Position", "", "", "");
|
||||
CAF_PDM_InitField(&m_dir, "Dir", 123.56, "Direction", "", "", "");
|
||||
CAF_PDM_InitField(&m_up, "Up", 0.0, "Up value", "", "", "" );
|
||||
CAF_PDM_InitFieldNoDefault(&m_numbers, "Numbers", "Important Numbers", "", "", "");
|
||||
}
|
||||
CAF_PDM_InitField(&m_position, "Position", 8765.2, "Position", "", "Tooltip", "WhatsThis");
|
||||
CAF_PDM_InitField(&m_dir, "Dir", 123.56, "Direction", "", "Tooltip", "WhatsThis");
|
||||
CAF_PDM_InitField(&m_up, "Up", 0.0, "Up value", "", "Tooltip", "WhatsThis" );
|
||||
CAF_PDM_InitFieldNoDefault(&m_numbers, "Numbers", "Important Numbers", "", "Tooltip", "WhatsThis");
|
||||
#if 1
|
||||
m_proxyDouble.registerSetMethod(this, &SimpleObj::setDoubleMember);
|
||||
m_proxyDouble.registerGetMethod(this, &SimpleObj::doubleMember);
|
||||
AddUiCapabilityToField(&m_proxyDouble);
|
||||
AddXmlCapabilityToField(&m_proxyDouble);
|
||||
CAF_PDM_InitFieldNoDefault(&m_proxyDouble, "ProxyDouble", "ProxyDouble", "", "", "");
|
||||
#endif
|
||||
}
|
||||
|
||||
/// Assignment and copying of PDM objects is not focus for the features. This is only a
|
||||
/// "would it work" test
|
||||
SimpleObj(const SimpleObj& other)
|
||||
: PdmObject()
|
||||
{
|
||||
CAF_PDM_InitField(&m_position, "Position", 8765.2, "Position", "", "", "");
|
||||
CAF_PDM_InitField(&m_dir, "Dir", 123.56, "Direction", "", "", "");
|
||||
CAF_PDM_InitField(&m_up, "Up", 0.0, "Up value", "", "", "" );
|
||||
CAF_PDM_InitFieldNoDefault(&m_numbers, "Numbers", "Important Numbers", "", "", "");
|
||||
CAF_PDM_InitField(&m_position, "Position", 8765.2, "Position", "", "", "WhatsThis");
|
||||
CAF_PDM_InitField(&m_dir, "Dir", 123.56, "Direction", "", "", "WhatsThis");
|
||||
CAF_PDM_InitField(&m_up, "Up", 0.0, "Up value", "", "", "WhatsThis" );
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_numbers, "Numbers", "Important Numbers", "", "", "WhatsThis");
|
||||
|
||||
m_position = other.m_position;
|
||||
m_dir = other.m_dir;
|
||||
@@ -87,6 +98,14 @@ public:
|
||||
caf::PdmField<double> m_dir;
|
||||
caf::PdmField<double> m_up;
|
||||
caf::PdmField<std::vector<double> > m_numbers;
|
||||
caf::PdmProxyValueField<double> m_proxyDouble;
|
||||
|
||||
void setDoubleMember(const double& d) { m_doubleMember = d; std::cout << "setDoubleMember" << std::endl; }
|
||||
double doubleMember() const { std::cout << "doubleMember" << std::endl; return m_doubleMember; }
|
||||
|
||||
double m_doubleMember;
|
||||
|
||||
|
||||
};
|
||||
CAF_PDM_SOURCE_INIT(SimpleObj, "SimpleObj");
|
||||
|
||||
@@ -99,19 +118,19 @@ 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_InitObject("DemoPdmObject", "", "Tooltip DemoPdmObject", "WhatsThis DemoPdmObject");
|
||||
|
||||
CAF_PDM_InitField(&m_doubleField, "BigNumber", 0.0, "Big Number", "",
|
||||
CAF_PDM_InitField(&m_doubleField, "BigNumber", 0.0, "", "",
|
||||
"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","",
|
||||
CAF_PDM_InitField(&m_intField, "IntNumber", 0, "","",
|
||||
"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("<EFBFBD><EFBFBD><EFBFBD> Test text end"), "", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjPtrField, "SimpleObjPtrField", "", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjPtrField2, "SimpleObjPtrField2", "", "", "", "");
|
||||
CAF_PDM_InitField(&m_textField, "TextField", QString("<EFBFBD><EFBFBD><EFBFBD> Test text end"), "TextField", "", "Tooltip", "WhatsThis");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjPtrField, "SimpleObjPtrField", "SimpleObjPtrField", "", "Tooltip", "WhatsThis");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjPtrField2, "SimpleObjPtrField2", "SimpleObjPtrField2", "", "Tooltip", "WhatsThis");
|
||||
m_simpleObjPtrField2 = new SimpleObj;
|
||||
}
|
||||
|
||||
@@ -125,8 +144,8 @@ public:
|
||||
caf::PdmField<int> m_intField;
|
||||
caf::PdmField<QString> m_textField;
|
||||
|
||||
caf::PdmField<SimpleObj*> m_simpleObjPtrField;
|
||||
caf::PdmField<SimpleObj*> m_simpleObjPtrField2;
|
||||
caf::PdmChildField<SimpleObj*> m_simpleObjPtrField;
|
||||
caf::PdmChildField<SimpleObj*> m_simpleObjPtrField2;
|
||||
};
|
||||
|
||||
CAF_PDM_SOURCE_INIT(DemoPdmObject, "DemoPdmObject");
|
||||
@@ -143,15 +162,17 @@ public:
|
||||
|
||||
InheritedDemoObj()
|
||||
{
|
||||
CAF_PDM_InitObject("InheritedDemoObj", "", "ToolTip InheritedDemoObj", "Whatsthis InheritedDemoObj");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_texts, "Texts", "Some words", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_testEnumField, "TestEnumValue", "An Enum", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjectsField, "SimpleObjects", "A child object", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjectsField, "SimpleObjects", "SimpleObjectsField", "", "ToolTip SimpleObjectsField", "Whatsthis SimpleObjectsField");
|
||||
|
||||
}
|
||||
|
||||
caf::PdmField<std::vector<QString> > m_texts;
|
||||
caf::PdmField< caf::AppEnum<TestEnumType> > m_testEnumField;
|
||||
caf::PdmPointersField<SimpleObj*> m_simpleObjectsField;
|
||||
caf::PdmChildArrayField<SimpleObj*> m_simpleObjectsField;
|
||||
|
||||
};
|
||||
CAF_PDM_SOURCE_INIT(InheritedDemoObj, "InheritedDemoObj");
|
||||
@@ -171,6 +192,13 @@ void AppEnum<InheritedDemoObj::TestEnumType>::setUp()
|
||||
|
||||
}
|
||||
|
||||
TEST(BaseTest, Delete)
|
||||
{
|
||||
SimpleObj* s2 = new SimpleObj;
|
||||
delete s2;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// This is a testbed to try out different aspects, instead of having a main in a prototype program
|
||||
/// To be disabled when everything gets more mature.
|
||||
@@ -179,7 +207,7 @@ TEST(BaseTest, Start)
|
||||
{
|
||||
DemoPdmObject* a = new DemoPdmObject;
|
||||
|
||||
caf::PdmObject* demo = caf::PdmObjectFactory::instance()->create("DemoPdmObject");
|
||||
caf::PdmObjectHandle* demo = caf::PdmDefaultObjectFactory::instance()->create("DemoPdmObject");
|
||||
EXPECT_TRUE(demo != NULL);
|
||||
|
||||
QString xml;
|
||||
@@ -196,7 +224,7 @@ TEST(BaseTest, Start)
|
||||
s.m_dir = 10000;
|
||||
sp = &s;
|
||||
a->m_textField = "Hei og h<>";
|
||||
*s2 = s;
|
||||
//*s2 = s;
|
||||
a->m_simpleObjPtrField = s2;
|
||||
|
||||
s.writeFields(xmlStream);
|
||||
@@ -204,7 +232,7 @@ TEST(BaseTest, Start)
|
||||
a->writeFields(xmlStream);
|
||||
caf::PdmObjectGroup og;
|
||||
og.objects.push_back(a);
|
||||
og.objects.push_back(s2);
|
||||
og.objects.push_back(new SimpleObj);
|
||||
og.writeFields(xmlStream);
|
||||
std::cout << sp.p() << std::endl,
|
||||
|
||||
@@ -246,6 +274,7 @@ TEST(BaseTest, NormalPdmField)
|
||||
EXPECT_TRUE(field1 == field3);
|
||||
}
|
||||
|
||||
#if 0
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Test of PdmField of pointer operations
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -284,12 +313,13 @@ TEST(BaseTest, PointerPdmField)
|
||||
EXPECT_EQ((SimpleObj*)0, field2);
|
||||
EXPECT_EQ((SimpleObj*)0, field3);
|
||||
}
|
||||
#endif
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// Test of PdmPointersField operations
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
|
||||
TEST(BaseTest, PdmPointersField)
|
||||
#if 0
|
||||
TEST(BaseTest, PdmChildArrayField)
|
||||
{
|
||||
std::vector<caf::PdmFieldHandle*> parentFields;
|
||||
|
||||
@@ -308,7 +338,7 @@ TEST(BaseTest, PdmPointersField)
|
||||
ihd1->m_simpleObjectsField.push_back(s2);
|
||||
ihd1->m_simpleObjectsField.push_back(s3);
|
||||
|
||||
s1->parentFields(parentFields);
|
||||
s1->parentField(parentFields);
|
||||
EXPECT_EQ(size_t(1), parentFields.size());
|
||||
parentFields.clear();
|
||||
|
||||
@@ -321,7 +351,7 @@ TEST(BaseTest, PdmPointersField)
|
||||
EXPECT_EQ(s3, ihd1->m_simpleObjectsField[2]);
|
||||
|
||||
// childObjects
|
||||
std::vector<caf::PdmObject*> objects;
|
||||
std::vector<caf::PdmObjectHandle*> objects;
|
||||
ihd1->m_simpleObjectsField.childObjects(&objects);
|
||||
EXPECT_EQ(size_t(3), objects.size());
|
||||
|
||||
@@ -378,6 +408,8 @@ TEST(BaseTest, PdmPointersField)
|
||||
|
||||
|
||||
}
|
||||
#endif
|
||||
|
||||
template <>
|
||||
inline void GTestStreamToHelper<QString>(std::ostream* os, const QString& val) {
|
||||
*os << val.toLatin1().data();
|
||||
@@ -417,16 +449,23 @@ TEST(BaseTest, ReadWrite)
|
||||
d2->m_simpleObjPtrField = &s2;
|
||||
d2->m_simpleObjPtrField2 = s1;
|
||||
|
||||
id1->m_simpleObjectsField.push_back(s1);
|
||||
id1->m_simpleObjectsField.push_back(&s2);
|
||||
id1->m_simpleObjectsField.push_back(&s2);
|
||||
id1->m_simpleObjectsField.push_back(&s2);
|
||||
id1->m_simpleObjectsField.push_back(new SimpleObj);
|
||||
id1->m_simpleObjectsField[0]->m_numbers.v().push_back(3.0);
|
||||
id1->m_simpleObjectsField.push_back(new SimpleObj);
|
||||
id1->m_simpleObjectsField[1]->m_numbers.v().push_back(3.1);
|
||||
id1->m_simpleObjectsField[1]->m_numbers.v().push_back(3.11);
|
||||
id1->m_simpleObjectsField[1]->m_numbers.v().push_back(3.12);
|
||||
id1->m_simpleObjectsField[1]->m_numbers.v().push_back(3.13);
|
||||
id1->m_simpleObjectsField.push_back(new SimpleObj);
|
||||
id1->m_simpleObjectsField[2]->m_numbers.v().push_back(3.2);
|
||||
id1->m_simpleObjectsField.push_back(new SimpleObj);
|
||||
id1->m_simpleObjectsField[3]->m_numbers.v().push_back(3.3);
|
||||
|
||||
// Add to document
|
||||
|
||||
xmlDoc.addObject(d1);
|
||||
xmlDoc.addObject(d2);
|
||||
xmlDoc.addObject(s1);
|
||||
xmlDoc.addObject(new SimpleObj);
|
||||
xmlDoc.addObject(id1);
|
||||
xmlDoc.addObject(id2);
|
||||
|
||||
@@ -470,7 +509,7 @@ TEST(BaseTest, ReadWrite)
|
||||
EXPECT_EQ(size_t(2),ihDObjs.size() );
|
||||
ASSERT_EQ(size_t(4), ihDObjs[0]->m_simpleObjectsField.size());
|
||||
ASSERT_EQ(size_t(4), ihDObjs[0]->m_simpleObjectsField[1]->m_numbers().size());
|
||||
EXPECT_EQ(2.7, ihDObjs[0]->m_simpleObjectsField[1]->m_numbers()[3]);
|
||||
EXPECT_EQ(3.13, ihDObjs[0]->m_simpleObjectsField[1]->m_numbers()[3]);
|
||||
|
||||
EXPECT_EQ(QString("<EFBFBD><EFBFBD><EFBFBD> Test text end"), ihDObjs[0]->m_textField());
|
||||
|
||||
@@ -619,8 +658,6 @@ TEST(BaseTest, PdmPointer)
|
||||
|
||||
EXPECT_TRUE(p == d && p2 == d);
|
||||
EXPECT_TRUE(p.p() == d);
|
||||
EXPECT_TRUE((*p).uiName() == (*d).uiName());
|
||||
EXPECT_TRUE(p->uiName() == "File");
|
||||
p = 0;
|
||||
EXPECT_TRUE(p == NULL);
|
||||
EXPECT_TRUE(p.isNull());
|
||||
@@ -646,30 +683,30 @@ TEST(BaseTest, PdmObjectFactory)
|
||||
{
|
||||
{
|
||||
SimpleObj* s = NULL;
|
||||
s = dynamic_cast<SimpleObj*> (caf::PdmObjectFactory::instance()->create("SimpleObj"));
|
||||
s = dynamic_cast<SimpleObj*> (caf::PdmDefaultObjectFactory::instance()->create("SimpleObj"));
|
||||
EXPECT_TRUE(s != NULL);
|
||||
}
|
||||
{
|
||||
DemoPdmObject* s = NULL;
|
||||
s = dynamic_cast<DemoPdmObject*> (caf::PdmObjectFactory::instance()->create("DemoPdmObject"));
|
||||
s = dynamic_cast<DemoPdmObject*> (caf::PdmDefaultObjectFactory::instance()->create("DemoPdmObject"));
|
||||
EXPECT_TRUE(s != NULL);
|
||||
delete s;
|
||||
}
|
||||
{
|
||||
InheritedDemoObj* s = NULL;
|
||||
s = dynamic_cast<InheritedDemoObj*> (caf::PdmObjectFactory::instance()->create("InheritedDemoObj"));
|
||||
s = dynamic_cast<InheritedDemoObj*> (caf::PdmDefaultObjectFactory::instance()->create("InheritedDemoObj"));
|
||||
EXPECT_TRUE(s != NULL);
|
||||
}
|
||||
|
||||
{
|
||||
caf::PdmDocument* s = NULL;
|
||||
s = dynamic_cast<caf::PdmDocument*> (caf::PdmObjectFactory::instance()->create("PdmDocument"));
|
||||
s = dynamic_cast<caf::PdmDocument*> (caf::PdmDefaultObjectFactory::instance()->create("PdmDocument"));
|
||||
EXPECT_TRUE(s != NULL);
|
||||
}
|
||||
|
||||
{
|
||||
caf::PdmObjectGroup* s = NULL;
|
||||
s = dynamic_cast<caf::PdmObjectGroup*> (caf::PdmObjectFactory::instance()->create("PdmObjectGroup"));
|
||||
s = dynamic_cast<caf::PdmObjectGroup*> (caf::PdmDefaultObjectFactory::instance()->create("PdmObjectGroup"));
|
||||
EXPECT_TRUE(s != NULL);
|
||||
}
|
||||
|
||||
@@ -680,12 +717,12 @@ TEST(BaseTest, PdmObjectFactory)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(BaseTest, ValidXmlKeywords)
|
||||
{
|
||||
EXPECT_TRUE(caf::PdmObject::isValidXmlElementName("Valid_name"));
|
||||
EXPECT_TRUE(caf::PdmXmlObjectHandle::isValidXmlElementName("Valid_name"));
|
||||
|
||||
EXPECT_FALSE(caf::PdmObject::isValidXmlElementName("2Valid_name"));
|
||||
EXPECT_FALSE(caf::PdmObject::isValidXmlElementName(".Valid_name"));
|
||||
EXPECT_FALSE(caf::PdmObject::isValidXmlElementName("xml_Valid_name"));
|
||||
EXPECT_FALSE(caf::PdmObject::isValidXmlElementName("Valid_name_with_space "));
|
||||
EXPECT_FALSE(caf::PdmXmlObjectHandle::isValidXmlElementName("2Valid_name"));
|
||||
EXPECT_FALSE(caf::PdmXmlObjectHandle::isValidXmlElementName(".Valid_name"));
|
||||
EXPECT_FALSE(caf::PdmXmlObjectHandle::isValidXmlElementName("xml_Valid_name"));
|
||||
EXPECT_FALSE(caf::PdmXmlObjectHandle::isValidXmlElementName("Valid_name_with_space "));
|
||||
}
|
||||
|
||||
TEST(BaseTest, PdmPointersFieldInsertVector)
|
||||
@@ -703,8 +740,14 @@ TEST(BaseTest, PdmPointersFieldInsertVector)
|
||||
|
||||
std::vector<caf::PdmPointer<SimpleObj> > typedObjects;
|
||||
pdmGroup.objectsByType(&typedObjects);
|
||||
EXPECT_EQ(size_t(3), typedObjects.size());
|
||||
|
||||
ihd1->m_simpleObjectsField.insert(ihd1->m_simpleObjectsField.size(), typedObjects);
|
||||
std::vector<caf::PdmPointer<SimpleObj> > objs;
|
||||
objs.push_back(new SimpleObj);
|
||||
objs.push_back(new SimpleObj);
|
||||
objs.push_back(new SimpleObj);
|
||||
|
||||
ihd1->m_simpleObjectsField.insert(ihd1->m_simpleObjectsField.size(), objs);
|
||||
EXPECT_EQ(size_t(3), ihd1->m_simpleObjectsField.size());
|
||||
|
||||
delete ihd1;
|
||||
@@ -731,14 +774,159 @@ TEST(BaseTest, PdmObjectGroupCopyOfTypedObjects)
|
||||
og.objects.push_back(ihd1);
|
||||
|
||||
std::vector<caf::PdmPointer<SimpleObj> > simpleObjList;
|
||||
og.createCopyByType(&simpleObjList);
|
||||
og.createCopyByType(&simpleObjList, caf::PdmDefaultObjectFactory::instance());
|
||||
EXPECT_EQ(size_t(3), simpleObjList.size());
|
||||
EXPECT_EQ(1000, simpleObjList[0]->m_position);
|
||||
EXPECT_EQ(size_t(1), simpleObjList[0]->m_numbers.v().size());
|
||||
EXPECT_EQ(10, simpleObjList[0]->m_numbers.v()[0]);
|
||||
|
||||
EXPECT_EQ(2000, simpleObjList[1]->m_position);
|
||||
EXPECT_EQ(3000, simpleObjList[2]->m_position);
|
||||
|
||||
|
||||
std::vector<caf::PdmPointer<InheritedDemoObj> > inheritObjList;
|
||||
og.createCopyByType(&inheritObjList);
|
||||
og.createCopyByType(&inheritObjList, caf::PdmDefaultObjectFactory::instance());
|
||||
EXPECT_EQ(size_t(1), inheritObjList.size());
|
||||
|
||||
og.deleteObjects();
|
||||
EXPECT_EQ(size_t(3), simpleObjList.size());
|
||||
EXPECT_EQ(size_t(1), inheritObjList.size());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
/// PdmChildArrayFieldHandle
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(BaseTest, PdmChildArrayFieldHandle)
|
||||
{
|
||||
|
||||
// virtual size_t size() const = 0;
|
||||
// virtual bool empty() const = 0;
|
||||
// virtual void clear() = 0;
|
||||
// virtual PdmObject* createAppendObject(int indexAfter) = 0;
|
||||
// virtual void erase(size_t index) = 0;
|
||||
// virtual void deleteAllChildObjects() = 0;
|
||||
//
|
||||
// virtual PdmObject* at(size_t index) = 0;
|
||||
//
|
||||
// bool hasSameFieldCountForAllObjects();
|
||||
|
||||
SimpleObj* s1 = new SimpleObj;
|
||||
s1->m_position = 1000;
|
||||
s1->m_numbers.v().push_back(10);
|
||||
|
||||
SimpleObj* s2 = new SimpleObj;
|
||||
s2->m_position = 2000;
|
||||
|
||||
SimpleObj* s3 = new SimpleObj;
|
||||
s3->m_position = 3000;
|
||||
|
||||
InheritedDemoObj* ihd1 = new InheritedDemoObj;
|
||||
caf::PdmChildArrayFieldHandle* listField = &(ihd1->m_simpleObjectsField);
|
||||
|
||||
EXPECT_EQ(0, listField->size());
|
||||
EXPECT_TRUE(listField->hasSameFieldCountForAllObjects());
|
||||
EXPECT_TRUE(listField->empty());
|
||||
|
||||
ihd1->m_simpleObjectsField.push_back(new SimpleObj);
|
||||
EXPECT_EQ(1, listField->size());
|
||||
EXPECT_TRUE(listField->hasSameFieldCountForAllObjects());
|
||||
EXPECT_FALSE(listField->empty());
|
||||
|
||||
ihd1->m_simpleObjectsField.push_back(s1);
|
||||
ihd1->m_simpleObjectsField.push_back(s2);
|
||||
ihd1->m_simpleObjectsField.push_back(s3);
|
||||
|
||||
EXPECT_EQ(4, listField->size());
|
||||
EXPECT_TRUE(listField->hasSameFieldCountForAllObjects());
|
||||
EXPECT_FALSE(listField->empty());
|
||||
|
||||
listField->erase(0);
|
||||
EXPECT_EQ(3, listField->size());
|
||||
EXPECT_TRUE(listField->hasSameFieldCountForAllObjects());
|
||||
EXPECT_FALSE(listField->empty());
|
||||
|
||||
listField->deleteAllChildObjects();
|
||||
EXPECT_EQ(0, listField->size());
|
||||
EXPECT_TRUE(listField->hasSameFieldCountForAllObjects());
|
||||
EXPECT_TRUE(listField->empty());
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
class ReferenceDemoPdmObject: public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
public:
|
||||
|
||||
ReferenceDemoPdmObject()
|
||||
{
|
||||
CAF_PDM_InitObject("ReferenceDemoPdmObject", "", "Tooltip DemoPdmObject", "WhatsThis DemoPdmObject");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_pointersField, "SimpleObjPtrField", "SimpleObjPtrField", "", "Tooltip", "WhatsThis");
|
||||
CAF_PDM_InitFieldNoDefault(&m_simpleObjPtrField2, "SimpleObjPtrField2", "SimpleObjPtrField2", "", "Tooltip", "WhatsThis");
|
||||
}
|
||||
|
||||
// Fields
|
||||
caf::PdmChildField<PdmObjectHandle*> m_pointersField;
|
||||
caf::PdmChildArrayField<SimpleObj*> m_simpleObjPtrField2;
|
||||
};
|
||||
|
||||
CAF_PDM_SOURCE_INIT(ReferenceDemoPdmObject, "ReferenceDemoPdmObject");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(BaseTest, PdmReferenceHelper)
|
||||
{
|
||||
SimpleObj* s1 = new SimpleObj;
|
||||
s1->m_position = 1000;
|
||||
s1->m_numbers.v().push_back(10);
|
||||
|
||||
SimpleObj* s2 = new SimpleObj;
|
||||
s2->m_position = 2000;
|
||||
|
||||
SimpleObj* s3 = new SimpleObj;
|
||||
s3->m_position = 3000;
|
||||
|
||||
InheritedDemoObj* ihd1 = new InheritedDemoObj;
|
||||
caf::PdmChildArrayFieldHandle* listField = &(ihd1->m_simpleObjectsField);
|
||||
ihd1->m_simpleObjectsField.push_back(new SimpleObj);
|
||||
|
||||
ihd1->m_simpleObjectsField.push_back(s1);
|
||||
ihd1->m_simpleObjectsField.push_back(s2);
|
||||
ihd1->m_simpleObjectsField.push_back(s3);
|
||||
|
||||
{
|
||||
QString refString = caf::PdmReferenceHelper::referenceFromRootToObject(NULL, s3);
|
||||
EXPECT_TRUE(refString.isEmpty());
|
||||
|
||||
refString = caf::PdmReferenceHelper::referenceFromRootToObject(ihd1, s3);
|
||||
QString expectedString = ihd1->m_simpleObjectsField.keyword() + " 3";
|
||||
EXPECT_STREQ(refString.toAscii(), expectedString.toAscii());
|
||||
|
||||
caf::PdmObjectHandle* fromRef = caf::PdmReferenceHelper::objectFromReference(ihd1, refString);
|
||||
EXPECT_TRUE(fromRef == s3);
|
||||
}
|
||||
|
||||
ReferenceDemoPdmObject* objA = new ReferenceDemoPdmObject;
|
||||
objA->m_pointersField = ihd1;
|
||||
|
||||
{
|
||||
QString refString = caf::PdmReferenceHelper::referenceFromRootToObject(objA, s3);
|
||||
|
||||
caf::PdmObjectHandle* fromRef = caf::PdmReferenceHelper::objectFromReference(objA, refString);
|
||||
EXPECT_TRUE(fromRef == s3);
|
||||
}
|
||||
|
||||
|
||||
// Test reference to field
|
||||
{
|
||||
QString refString = caf::PdmReferenceHelper::referenceFromRootToField(objA, &(ihd1->m_simpleObjectsField));
|
||||
|
||||
caf::PdmFieldHandle* fromRef = caf::PdmReferenceHelper::fieldFromReference(objA, refString);
|
||||
EXPECT_TRUE(fromRef == &(ihd1->m_simpleObjectsField));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
|
||||
project ( cafTensor_UnitTests )
|
||||
|
||||
set(RI_VIZ_FWK_ROOT ../../../Fwk/VizFwk CACHE PATH "Path to VizFwk")
|
||||
set(RI_GTEST_ROOT .. CACHE PATH "Path to folder containing gtest folder")
|
||||
set(RI_SRC_ROOT ../../cafTensor CACHE PATH "Path to the code to test")
|
||||
set(RI_TEST_FILE "" CACHE FILEPATH "Path to test file")
|
||||
|
||||
include(${RI_VIZ_FWK_ROOT}/CMake/Utils/ceeDetermineCompilerFlags.cmake)
|
||||
|
||||
add_subdirectory(${RI_VIZ_FWK_ROOT}/LibCore buildVizFwk)
|
||||
|
||||
add_definitions( -DTEST_FILE="${RI_TEST_FILE}")
|
||||
|
||||
include_directories(${RI_VIZ_FWK_ROOT}/LibCore)
|
||||
include_directories(${RI_GTEST_ROOT})
|
||||
include_directories(${RI_SRC_ROOT})
|
||||
|
||||
set( UNIT_TEST_CPP_SOURCES
|
||||
main.cpp
|
||||
cafTensor_UnitTests.cpp
|
||||
${RI_SRC_ROOT}/cafTensor3.cpp
|
||||
${RI_SRC_ROOT}/cafTensor3.h
|
||||
${RI_SRC_ROOT}/cafTensor3.inl
|
||||
|
||||
${RI_GTEST_ROOT}/gtest/gtest-all.cpp
|
||||
)
|
||||
|
||||
add_executable( ${PROJECT_NAME} ${UNIT_TEST_CPP_SOURCES} )
|
||||
target_link_libraries( ${PROJECT_NAME} LibCore)
|
||||
|
||||
@@ -1,194 +0,0 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2015- Statoil ASA
|
||||
// Copyright (C) 2015- Ceetron Solutions AS
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
#include "cafTensor3.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(cafTensor3Test, BasicTests)
|
||||
{
|
||||
caf::Ten3f T1;
|
||||
caf::Ten3f T2(1, 2, 3, 4, 5, 6);
|
||||
caf::Ten3f T3(T2);
|
||||
|
||||
EXPECT_EQ(1, T2[caf::Ten3f::SXX]);
|
||||
EXPECT_EQ(2, T2[caf::Ten3f::SYY]);
|
||||
EXPECT_EQ(3, T2[caf::Ten3f::SZZ]);
|
||||
EXPECT_EQ(4, T2[caf::Ten3f::SXY]);
|
||||
EXPECT_EQ(5, T2[caf::Ten3f::SYZ]);
|
||||
EXPECT_EQ(6, T2[caf::Ten3f::SZX]);
|
||||
|
||||
T1 = T2;
|
||||
EXPECT_EQ(1, T1[caf::Ten3f::SXX]);
|
||||
EXPECT_EQ(2, T1[caf::Ten3f::SYY]);
|
||||
EXPECT_EQ(3, T1[caf::Ten3f::SZZ]);
|
||||
EXPECT_EQ(4, T1[caf::Ten3f::SXY]);
|
||||
EXPECT_EQ(5, T1[caf::Ten3f::SYZ]);
|
||||
EXPECT_EQ(6, T1[caf::Ten3f::SZX]);
|
||||
|
||||
EXPECT_TRUE(T2 == T3);
|
||||
|
||||
EXPECT_TRUE(T1 == T2);
|
||||
EXPECT_TRUE(T1.equals(T2));
|
||||
EXPECT_FALSE(T1 != T2);
|
||||
|
||||
T1[caf::Ten3f::SXX] = 7;
|
||||
|
||||
EXPECT_TRUE(T1 != T2);
|
||||
EXPECT_FALSE(T1 == T2);
|
||||
EXPECT_FALSE(T1.equals(T2));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(cafTensor3Test, setFromNativeArray)
|
||||
{
|
||||
float tensData[6] = {11,12,13,14,15,16};
|
||||
caf::Ten3f T1;
|
||||
|
||||
T1.setFromAbaqusLayout(tensData);
|
||||
EXPECT_EQ(11, T1[caf::Ten3f::SXX]);
|
||||
EXPECT_EQ(12, T1[caf::Ten3f::SYY]);
|
||||
EXPECT_EQ(13, T1[caf::Ten3f::SZZ]);
|
||||
EXPECT_EQ(14, T1[caf::Ten3f::SXY]);
|
||||
EXPECT_EQ(15, T1[caf::Ten3f::SZX]);
|
||||
EXPECT_EQ(16, T1[caf::Ten3f::SYZ]);
|
||||
|
||||
caf::Ten3f T2;
|
||||
T2.setFromInternalLayout(tensData);
|
||||
EXPECT_EQ(11, T2[caf::Ten3f::SXX]);
|
||||
EXPECT_EQ(12, T2[caf::Ten3f::SYY]);
|
||||
EXPECT_EQ(13, T2[caf::Ten3f::SZZ]);
|
||||
EXPECT_EQ(14, T2[caf::Ten3f::SXY]);
|
||||
EXPECT_EQ(15, T2[caf::Ten3f::SYZ]);
|
||||
EXPECT_EQ(16, T2[caf::Ten3f::SZX]);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(cafTensor3Test, zero)
|
||||
{
|
||||
caf::Ten3f T0(0,0,0,0,0,0);
|
||||
|
||||
cvf::Vec3f pDirs[3];
|
||||
cvf::Vec3f p0 = T0.calculatePrincipals(pDirs);
|
||||
|
||||
EXPECT_TRUE(p0 == cvf::Vec3f::ZERO);
|
||||
EXPECT_TRUE(pDirs[0] == cvf::Vec3f::ZERO);
|
||||
EXPECT_TRUE(pDirs[1] == cvf::Vec3f::ZERO);
|
||||
EXPECT_TRUE(pDirs[2] == cvf::Vec3f::ZERO);
|
||||
|
||||
float vm = T0.calculateVonMises();
|
||||
EXPECT_EQ(0.0f, vm );
|
||||
}
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(cafTensor3Test, undef)
|
||||
{
|
||||
float inf = std::numeric_limits<float>::infinity();
|
||||
caf::Ten3f T0(0,0,0,0,0,inf);
|
||||
|
||||
cvf::Vec3f pDirs[3];
|
||||
cvf::Vec3f p0 = T0.calculatePrincipals(pDirs);
|
||||
|
||||
EXPECT_TRUE(p0 == cvf::Vec3f(inf, inf, inf));
|
||||
EXPECT_TRUE(pDirs[0] == cvf::Vec3f::ZERO);
|
||||
EXPECT_TRUE(pDirs[1] == cvf::Vec3f::ZERO);
|
||||
EXPECT_TRUE(pDirs[2] == cvf::Vec3f::ZERO);
|
||||
|
||||
float vm = T0.calculateVonMises();
|
||||
EXPECT_EQ(inf, vm );
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(cafTensor3Test, realTensors1)
|
||||
{
|
||||
caf::Ten3f T0(80,50,20,40,45,50);
|
||||
|
||||
cvf::Vec3f pDirs[3];
|
||||
cvf::Vec3f p0 = T0.calculatePrincipals(pDirs);
|
||||
|
||||
EXPECT_NEAR( 143.8f, p0[0], 0.1 );
|
||||
EXPECT_NEAR( 23.6f, p0[1], 0.1 );
|
||||
EXPECT_NEAR( -17.4f, p0[2], 0.1 );
|
||||
|
||||
float vm = T0.calculateVonMises();
|
||||
EXPECT_NEAR(145.2f, vm, 0.1 );
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(cafTensor3Test, realTensors2)
|
||||
{
|
||||
caf::Ten3f T0(20,50,80,50,45,40);
|
||||
|
||||
cvf::Vec3f pDirs[3];
|
||||
cvf::Vec3f p0 = T0.calculatePrincipals(pDirs);
|
||||
|
||||
EXPECT_NEAR( 143.8f, p0[0], 0.1 );
|
||||
EXPECT_NEAR( 23.9f, p0[1], 0.1 );
|
||||
EXPECT_NEAR( -17.6f, p0[2], 0.1 );
|
||||
|
||||
float vm = T0.calculateVonMises();
|
||||
EXPECT_NEAR(145.2f, vm, 0.1 );
|
||||
}
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TEST(cafTensor3Test, realTensors3)
|
||||
{
|
||||
caf::Ten3f T0(10,20,30,0,0,0);
|
||||
|
||||
cvf::Vec3f pDirs[3];
|
||||
cvf::Vec3f p0 = T0.calculatePrincipals(pDirs);
|
||||
|
||||
EXPECT_NEAR( 30.0f, p0[0], 0.1 );
|
||||
EXPECT_NEAR( 20.0f, p0[1], 0.1 );
|
||||
EXPECT_NEAR( 10.0f, p0[2], 0.1 );
|
||||
|
||||
EXPECT_NEAR( 0.0f, pDirs[0][0], 0.1 );
|
||||
EXPECT_NEAR( 0.0f, pDirs[0][1], 0.1 );
|
||||
EXPECT_NEAR( 1.0f, pDirs[0][2], 0.1 );
|
||||
|
||||
EXPECT_NEAR( 0.0f, pDirs[1][0], 0.1);
|
||||
EXPECT_NEAR( 1.0f, pDirs[1][1], 0.1 );
|
||||
EXPECT_NEAR( 0.0f, pDirs[1][2], 0.1 );
|
||||
|
||||
EXPECT_NEAR( 1.0f, pDirs[2][0], 0.1 );
|
||||
EXPECT_NEAR( 0.0f, pDirs[2][1], 0.1 );
|
||||
EXPECT_NEAR( 0.0f, pDirs[2][2], 0.1 );
|
||||
|
||||
|
||||
float vm = T0.calculateVonMises();
|
||||
EXPECT_NEAR(17.3f, vm, 0.1 );
|
||||
}
|
||||
|
||||
|
||||
@@ -1,42 +0,0 @@
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Copyright (C) 2015 - Statoil ASA
|
||||
// Copyright (C) 2015 - Ceetron Solutions AS
|
||||
//
|
||||
// ResInsight is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, either version 3 of the License, or
|
||||
// (at your option) any later version.
|
||||
//
|
||||
// ResInsight is distributed in the hope that it will be useful, but WITHOUT ANY
|
||||
// WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
// FITNESS FOR A PARTICULAR PURPOSE.
|
||||
//
|
||||
// See the GNU General Public License at <http://www.gnu.org/licenses/gpl.html>
|
||||
// for more details.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#include "cvfBase.h"
|
||||
|
||||
#include "gtest/gtest.h"
|
||||
#include <stdio.h>
|
||||
|
||||
#include "cvfTrace.h"
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
cvf::Assert::setReportMode(cvf::Assert::CONSOLE);
|
||||
|
||||
testing::InitGoogleTest(&argc, argv);
|
||||
|
||||
int result = RUN_ALL_TESTS();
|
||||
|
||||
std::cout << "Please press <Enter> to close the window.";
|
||||
std::cin.get();
|
||||
|
||||
return result;
|
||||
}
|
||||
@@ -1,7 +1,14 @@
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
|
||||
# Qt
|
||||
find_package ( Qt4 COMPONENTS QtCore QtGui QtMain QtOpenGl )
|
||||
include (${QT_USE_FILE})
|
||||
|
||||
project ( cafTestApplication )
|
||||
|
||||
|
||||
option(USE_COMMAND_FRAMEWORK "Use Caf Command Framework" ON)
|
||||
|
||||
# Qt MOC
|
||||
set ( QT_MOC_HEADERS
|
||||
MainWindow.h
|
||||
@@ -23,25 +30,58 @@ qt4_add_resources( QRC_FILES_CPP
|
||||
)
|
||||
|
||||
include_directories (
|
||||
${CMAKE_SOURCE_DIR}/cafProjectDataModel
|
||||
${CMAKE_SOURCE_DIR}/cafUserInterface
|
||||
${cafProjectDataModel_SOURCE_DIR}
|
||||
${cafUserInterface_SOURCE_DIR}
|
||||
)
|
||||
|
||||
# add the executable
|
||||
add_executable ( ${PROJECT_NAME}
|
||||
if (USE_COMMAND_FRAMEWORK)
|
||||
include_directories (
|
||||
${cafCommand_SOURCE_DIR}
|
||||
)
|
||||
ADD_DEFINITIONS(-DTAP_USE_COMMAND_FRAMEWORK)
|
||||
endif(USE_COMMAND_FRAMEWORK)
|
||||
|
||||
|
||||
include_directories (
|
||||
${cafPdmCore_SOURCE_DIR}
|
||||
${cafPdmUiCore_SOURCE_DIR}
|
||||
${cafPdmXml_SOURCE_DIR}
|
||||
)
|
||||
|
||||
set( PROJECT_FILES
|
||||
Main.cpp
|
||||
MainWindow.cpp
|
||||
WidgetLayoutTest.cpp
|
||||
)
|
||||
|
||||
|
||||
# add the executable
|
||||
add_executable ( ${PROJECT_NAME}
|
||||
${PROJECT_FILES}
|
||||
${MOC_FILES_CPP}
|
||||
${QRC_FILES_CPP}
|
||||
)
|
||||
|
||||
target_link_libraries ( ${PROJECT_NAME}
|
||||
set (TAP_LINK_LIBRARIES
|
||||
cafUserInterface
|
||||
cafProjectDataModel
|
||||
cafPdmXml
|
||||
${QT_LIBRARIES}
|
||||
)
|
||||
|
||||
if (USE_COMMAND_FRAMEWORK)
|
||||
set (TAP_LINK_LIBRARIES
|
||||
${TAP_LINK_LIBRARIES}
|
||||
cafCommand
|
||||
)
|
||||
endif(USE_COMMAND_FRAMEWORK)
|
||||
|
||||
|
||||
target_link_libraries ( ${PROJECT_NAME}
|
||||
${TAP_LINK_LIBRARIES}
|
||||
)
|
||||
|
||||
source_group("" FILES ${PROJECT_FILES})
|
||||
|
||||
# Copy Qt Dlls
|
||||
if (MSVC)
|
||||
set (QTLIBLIST QtCore QtGui QtOpenGl)
|
||||
|
||||
@@ -1,4 +1,6 @@
|
||||
|
||||
#include "cafPdmField.h"
|
||||
|
||||
#include "MainWindow.h"
|
||||
#include "WidgetLayoutTest.h"
|
||||
|
||||
@@ -6,16 +8,30 @@
|
||||
#include <QTreeView>
|
||||
#include <QAction>
|
||||
#include <QMenuBar>
|
||||
#include <QUndoView>
|
||||
|
||||
|
||||
#include "cafPdmField.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmDocument.h"
|
||||
#include "cafAppEnum.h"
|
||||
#include "cafUiTreeModelPdm.h"
|
||||
#include "cafPdmUiPropertyView.h"
|
||||
|
||||
#ifdef TAP_USE_COMMAND_FRAMEWORK
|
||||
#include "cafCmdExecCommandManager.h"
|
||||
#include "cafCmdSelectionHelper.h"
|
||||
#include "cafCmdFeatureManager.h"
|
||||
#endif
|
||||
|
||||
#include "cafPdmDocument.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmUiFilePathEditor.h"
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiPropertyView.h"
|
||||
#include "cafPdmUiTableView.h"
|
||||
#include "cafPdmUiTextEditor.h"
|
||||
#include "cafPdmUiTreeView.h"
|
||||
#include "cafPdmReferenceHelper.h"
|
||||
#include "cafSelectionManager.h"
|
||||
#include "cafUiTreeModelPdm.h"
|
||||
#include "cafPdmProxyValueField.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
|
||||
|
||||
|
||||
@@ -26,7 +42,7 @@ public:
|
||||
|
||||
DemoPdmObjectGroup()
|
||||
{
|
||||
CAF_PDM_InitObject("Demo Object Group", "", "This group object is a demo of the CAF framework", "This group object is a demo of the CAF framework")
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
@@ -41,14 +57,46 @@ public:
|
||||
{
|
||||
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<double> m_doubleField;
|
||||
caf::PdmField<int> m_intField;
|
||||
caf::PdmField<QString> m_textField;
|
||||
caf::PdmProxyValueField<double> m_proxyDoubleField;
|
||||
|
||||
caf::PdmField<bool> 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");
|
||||
@@ -69,18 +117,94 @@ public:
|
||||
{
|
||||
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 Number", "", "Enter some small number here", "This is a place you can enter a small integer value if you want");
|
||||
CAF_PDM_InitField(&m_testEnumField, "TestEnumValue", caf::AppEnum<TestEnumType>(T1), "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<TestEnumType>(T1), "EnumField", "", "", "");
|
||||
CAF_PDM_InitFieldNoDefault(&m_ptrField, "m_ptrField", "PtrField", "", "", "");
|
||||
|
||||
m_testEnumField.setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
||||
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<caf::PdmUiFieldHandle>()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
||||
}
|
||||
|
||||
caf::PdmField<double> m_doubleField;
|
||||
caf::PdmField<int> m_intField;
|
||||
caf::PdmField<QString> m_textField;
|
||||
caf::PdmField< caf::AppEnum<TestEnumType> > m_testEnumField;
|
||||
caf::PdmPtrField<SmallDemoPdmObjectA*> m_ptrField;
|
||||
|
||||
caf::PdmProxyValueField< caf::AppEnum<TestEnumType> > m_proxyEnumField;
|
||||
void setEnumMember(const caf::AppEnum<TestEnumType>& val) { m_proxyEnumMember = val; }
|
||||
caf::AppEnum<TestEnumType> enumMember() const { return m_proxyEnumMember; }
|
||||
TestEnumType m_proxyEnumMember;
|
||||
|
||||
|
||||
|
||||
caf::PdmField<bool> 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<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options;
|
||||
|
||||
|
||||
if (&m_ptrField == fieldNeedingOptions)
|
||||
{
|
||||
caf::PdmFieldHandle* field;
|
||||
std::vector<caf::PdmObjectHandle*> 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 = caf::uiField(uiObject->userDescriptionField());
|
||||
if (uiFieldHandle)
|
||||
{
|
||||
userDesc = uiFieldHandle->uiValue().toString();
|
||||
}
|
||||
}
|
||||
|
||||
options.push_back(caf::PdmOptionItemInfo(uiObject->uiName() + "(" + userDesc + ")", QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(objects[i]))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (useOptionsOnly) *useOptionsOnly = true;
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
virtual caf::PdmFieldHandle* userDescriptionField()
|
||||
{
|
||||
return &m_textField;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
@@ -113,21 +237,23 @@ public:
|
||||
{
|
||||
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(""), "", "", "", "");
|
||||
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");
|
||||
|
||||
CAF_PDM_InitFieldNoDefault(&m_objectList, "ObjectList", "Objects list", "", "List" , "This is a list of PdmObjects" );
|
||||
|
||||
m_filePath.setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
|
||||
m_filePath.setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
||||
m_longText.setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||
m_longText.setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
m_filePath.capability<caf::PdmUiFieldHandle>()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
|
||||
m_filePath.capability<caf::PdmUiFieldHandle>()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
||||
m_longText.capability<caf::PdmUiFieldHandle>()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||
m_longText.capability<caf::PdmUiFieldHandle>()->setUiLabelPosition(caf::PdmUiItemInfo::HIDDEN);
|
||||
|
||||
}
|
||||
|
||||
@@ -136,6 +262,7 @@ public:
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
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);
|
||||
@@ -165,11 +292,34 @@ public:
|
||||
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<caf::PdmObjectHandle>(m_objectListOfSameType[i]))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (useOptionsOnly) *useOptionsOnly = true;
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
virtual caf::PdmFieldHandle* userDescriptionField()
|
||||
{
|
||||
return &m_textField;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Fields
|
||||
caf::PdmField<bool> m_boolField;
|
||||
caf::PdmField<double> m_doubleField;
|
||||
@@ -182,7 +332,25 @@ public:
|
||||
caf::PdmField<std::vector<QString> > m_multiSelectList;
|
||||
|
||||
|
||||
caf::PdmPointersField< caf::PdmObject* > m_objectList;
|
||||
caf::PdmChildArrayField< caf::PdmObjectHandle* > m_objectList;
|
||||
caf::PdmChildArrayField< SmallDemoPdmObjectA* > m_objectListOfSameType;
|
||||
caf::PdmPtrField<SmallDemoPdmObjectA*> m_ptrField;
|
||||
|
||||
|
||||
caf::PdmField<bool> 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");
|
||||
@@ -196,9 +364,10 @@ MainWindow* MainWindow::sm_mainWindowInstance = NULL;
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
MainWindow::MainWindow()
|
||||
{
|
||||
m_treeView = NULL;
|
||||
m_treeModelPdm = NULL;
|
||||
// Initialize command framework
|
||||
|
||||
// Register default command features (add/delete item in list)
|
||||
|
||||
createActions();
|
||||
createDockPanels();
|
||||
|
||||
@@ -206,6 +375,13 @@ MainWindow::MainWindow()
|
||||
setPdmRoot(m_testRoot);
|
||||
|
||||
sm_mainWindowInstance = this;
|
||||
caf::SelectionManager::instance()->setPdmRootObject(m_testRoot);
|
||||
|
||||
#ifdef TAP_USE_COMMAND_FRAMEWORK
|
||||
caf::CmdExecCommandManager::instance()->enableUndoCommandSystem(true);
|
||||
undoView->setStack(caf::CmdExecCommandManager::instance()->undoStack());
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -214,27 +390,15 @@ MainWindow::MainWindow()
|
||||
void MainWindow::createDockPanels()
|
||||
{
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("Workspace", this);
|
||||
QDockWidget* dockWidget = new QDockWidget("PdmTreeView - controls property view", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
m_treeView = new QTreeView(dockWidget);
|
||||
dockWidget->setWidget(m_treeView);
|
||||
m_pdmUiTreeView = new caf::PdmUiTreeView(dockWidget);
|
||||
dockWidget->setWidget(m_pdmUiTreeView);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
/*
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("WidgetLayoutTest", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
WidgetLayoutTest* widgetLayoutTest = new WidgetLayoutTest(dockWidget);
|
||||
dockWidget->setWidget(widgetLayoutTest);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
*/
|
||||
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("cafPropertyView", this);
|
||||
@@ -246,6 +410,46 @@ void MainWindow::createDockPanels()
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("PdmTreeView2 - controls table view", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
m_pdmUiTreeView2 = new caf::PdmUiTreeView(dockWidget);
|
||||
m_pdmUiTreeView2->enableDefaultContextMenu(true);
|
||||
m_pdmUiTreeView2->setCurrentSelectionToCurrentEditorSelection(true);
|
||||
dockWidget->setWidget(m_pdmUiTreeView2);
|
||||
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
|
||||
}
|
||||
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("cafTableView", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
m_pdmUiTableView = new caf::PdmUiTableView(dockWidget);
|
||||
m_pdmUiTableView->setSelectionRole(caf::SelectionManager::CURRENT);
|
||||
m_pdmUiTableView->enableDefaultContextMenu(true);
|
||||
|
||||
dockWidget->setWidget(m_pdmUiTableView);
|
||||
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
|
||||
}
|
||||
|
||||
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("Undo stack", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
undoView = new QUndoView(this);
|
||||
dockWidget->setWidget(undoView);
|
||||
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockWidget);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -264,36 +468,64 @@ void MainWindow::buildTestModel()
|
||||
SmallDemoPdmObjectA* smallObj2 = new SmallDemoPdmObjectA;
|
||||
m_testRoot->addObject(smallObj2);
|
||||
|
||||
demoObject->m_objectList.push_back(new DemoPdmObject);
|
||||
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;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::setPdmRoot(caf::PdmObject* pdmRoot)
|
||||
void MainWindow::setPdmRoot(caf::PdmObjectHandle* pdmRoot)
|
||||
{
|
||||
caf::PdmUiTreeItem* treeItemRoot = caf::UiTreeItemBuilderPdm::buildViewItems(NULL, 0, pdmRoot);
|
||||
|
||||
if (!m_treeModelPdm)
|
||||
caf::PdmUiObjectHandle* uiObject = uiObj(pdmRoot);
|
||||
if (uiObject)
|
||||
{
|
||||
m_treeModelPdm = new caf::UiTreeModelPdm(this);
|
||||
m_pdmUiTreeView->setPdmItem(uiObject);
|
||||
}
|
||||
|
||||
m_treeModelPdm->setTreeItemRoot(treeItemRoot);
|
||||
connect(m_pdmUiTreeView, SIGNAL(selectionChanged()), SLOT(slotSimpleSelectionChanged()));
|
||||
|
||||
assert(m_treeView);
|
||||
m_treeView->setModel(m_treeModelPdm);
|
||||
// Set up test of using a field as a root item
|
||||
// Hack, because we know that pdmRoot is a PdmObjectGroup ...
|
||||
|
||||
if (treeItemRoot)
|
||||
std::vector<caf::PdmFieldHandle*> fields;
|
||||
pdmRoot->fields(fields);
|
||||
if (fields.size())
|
||||
{
|
||||
if (m_treeView->selectionModel())
|
||||
caf::PdmFieldHandle* field = fields[0];
|
||||
caf::PdmUiFieldHandle* uiFieldHandle = uiField(field);
|
||||
if (uiFieldHandle)
|
||||
{
|
||||
connect(m_treeView->selectionModel(), SIGNAL(selectionChanged( const QItemSelection & , const QItemSelection & )), SLOT(slotSelectionChanged( const QItemSelection & , const QItemSelection & )));
|
||||
m_pdmUiTreeView2->setPdmItem(uiFieldHandle);
|
||||
uiFieldHandle->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
||||
if (uiObject)
|
||||
{
|
||||
m_pdmUiTreeView2->setPdmItem(uiObject);
|
||||
}
|
||||
|
||||
connect(m_pdmUiTreeView2, SIGNAL(selectionChanged()), SLOT(slotShowTableView()));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -301,6 +533,10 @@ void MainWindow::setPdmRoot(caf::PdmObject* pdmRoot)
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
m_pdmUiTreeView->setPdmItem(NULL);
|
||||
m_pdmUiTreeView2->setPdmItem(NULL);
|
||||
m_pdmUiPropertyView->showProperties(NULL);
|
||||
m_pdmUiTableView->setListField(NULL);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -308,12 +544,6 @@ MainWindow::~MainWindow()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::releaseTestData()
|
||||
{
|
||||
m_treeView->setModel(NULL);
|
||||
if (m_treeModelPdm)
|
||||
{
|
||||
delete m_treeModelPdm;
|
||||
}
|
||||
|
||||
if (m_testRoot)
|
||||
{
|
||||
m_testRoot->deleteObjects();
|
||||
@@ -356,27 +586,35 @@ void MainWindow::createActions()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotInsert()
|
||||
{
|
||||
QModelIndex index = m_treeView->selectionModel()->currentIndex();
|
||||
QAbstractItemModel *model = m_treeView->model();
|
||||
std::vector<caf::PdmUiItem*> selection;
|
||||
m_pdmUiTreeView->selectedObjects(selection);
|
||||
|
||||
if (!model->insertRow(0, index))
|
||||
return;
|
||||
for (size_t i = 0; i < selection.size(); ++i)
|
||||
{
|
||||
caf::PdmUiFieldHandle* uiFh = dynamic_cast<caf::PdmUiFieldHandle*>(selection[i]);
|
||||
caf::PdmChildArrayField< caf::PdmObjectHandle*> * field = NULL;
|
||||
|
||||
QModelIndex child = model->index(0, 0, index);
|
||||
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;
|
||||
|
||||
// (
|
||||
// for (int column = 0; column < model->columnCount(index); ++column)
|
||||
// {
|
||||
// QModelIndex child = model->index(0, column, index);
|
||||
// model->setData(child, QVariant("[No data]"), Qt::EditRole);
|
||||
// if (!model->headerData(column, Qt::Horizontal).isValid())
|
||||
// model->setHeaderData(column, Qt::Horizontal, QVariant("[No header]"),
|
||||
// Qt::EditRole);
|
||||
// }
|
||||
// )
|
||||
if (uiFh) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(uiFh->fieldHandle());
|
||||
|
||||
m_treeView->selectionModel()->setCurrentIndex(model->index(0, 0, index), QItemSelectionModel::ClearAndSelect);
|
||||
if (listField)
|
||||
{
|
||||
caf::PdmObjectHandle* obj = listField->createAppendObject();
|
||||
listField->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
|
||||
}
|
||||
#endif
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -384,9 +622,29 @@ void MainWindow::slotInsert()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotRemove()
|
||||
{
|
||||
QModelIndex index = m_treeView->selectionModel()->currentIndex();
|
||||
QAbstractItemModel *model = m_treeView->model();
|
||||
model->removeRow(index.row(), index.parent());
|
||||
std::vector<caf::PdmUiItem*> selection;
|
||||
m_pdmUiTreeView->selectedObjects(selection);
|
||||
|
||||
for (size_t i = 0; i < selection.size(); ++i)
|
||||
{
|
||||
caf::PdmObjectHandle* obj = dynamic_cast< caf::PdmObjectHandle*>(selection[i]);
|
||||
if (obj)
|
||||
{
|
||||
caf::PdmFieldHandle* field = obj->parentField();
|
||||
|
||||
// Ordering is important
|
||||
|
||||
field->removeChildObject(obj);
|
||||
|
||||
// Delete object
|
||||
delete obj;
|
||||
|
||||
// Update editors
|
||||
caf::PdmUiFieldHandle::updateConnectedUiEditors(field);
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
@@ -400,19 +658,50 @@ void MainWindow::slotRemoveAll()
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected )
|
||||
void MainWindow::slotSimpleSelectionChanged()
|
||||
{
|
||||
if (selected.indexes().size() == 1)
|
||||
std::vector<caf::PdmUiItem*> selection;
|
||||
m_pdmUiTreeView->selectedObjects(selection);
|
||||
caf::PdmObjectHandle* obj = NULL;
|
||||
caf::PdmChildArrayFieldHandle* listField = NULL;
|
||||
|
||||
if (selection.size())
|
||||
{
|
||||
QModelIndex mi = selected.indexes()[0];
|
||||
caf::PdmUiTreeItem* treeItem = m_treeModelPdm->getTreeItemFromIndex(mi);
|
||||
if (treeItem && treeItem->dataObject())
|
||||
caf::PdmUiObjectHandle* pdmUiObj = dynamic_cast<caf::PdmUiObjectHandle*>( selection[0] );
|
||||
if (pdmUiObj) obj = pdmUiObj->owner();
|
||||
}
|
||||
|
||||
m_pdmUiPropertyView->showProperties(obj);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotShowTableView()
|
||||
{
|
||||
std::vector<caf::PdmUiItem*> selection;
|
||||
m_pdmUiTreeView2->selectedObjects(selection);
|
||||
caf::PdmObjectHandle* obj = NULL;
|
||||
caf::PdmChildArrayFieldHandle* listField = NULL;
|
||||
|
||||
if (selection.size())
|
||||
{
|
||||
caf::PdmUiItem* pdmUiItem = selection[0];
|
||||
|
||||
caf::PdmUiFieldHandle* guiField = dynamic_cast<caf::PdmUiFieldHandle*>(pdmUiItem);
|
||||
|
||||
if (guiField) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(guiField->fieldHandle());
|
||||
|
||||
if (listField)
|
||||
{
|
||||
m_pdmUiPropertyView->showProperties(treeItem->dataObject());
|
||||
if (!listField->hasSameFieldCountForAllObjects())
|
||||
{
|
||||
listField = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pdmUiPropertyView->showProperties(NULL);
|
||||
}
|
||||
|
||||
m_pdmUiTableView->setListField(listField);
|
||||
|
||||
caf::PdmUiFieldHandle::updateConnectedUiEditors(listField);
|
||||
}
|
||||
|
||||
@@ -6,13 +6,16 @@
|
||||
|
||||
class DemoPdmObject;
|
||||
class QTreeView;
|
||||
class QUndoView;
|
||||
|
||||
namespace caf
|
||||
{
|
||||
class PdmObjectGroup;
|
||||
class PdmObject;
|
||||
class PdmObjectHandle;
|
||||
class UiTreeModelPdm;
|
||||
class PdmUiPropertyView;
|
||||
class PdmUiTreeView;
|
||||
class PdmUiTableView;
|
||||
}
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
@@ -24,7 +27,7 @@ public:
|
||||
~MainWindow();
|
||||
|
||||
static MainWindow* instance();
|
||||
void setPdmRoot(caf::PdmObject* pdmRoot);
|
||||
void setPdmRoot(caf::PdmObjectHandle* pdmRoot);
|
||||
|
||||
private:
|
||||
void createActions();
|
||||
@@ -40,17 +43,21 @@ private slots:
|
||||
void slotInsert();
|
||||
void slotRemove();
|
||||
void slotRemoveAll();
|
||||
void slotSelectionChanged(const QItemSelection &, const QItemSelection & );
|
||||
|
||||
void slotSimpleSelectionChanged();
|
||||
void slotShowTableView();
|
||||
|
||||
|
||||
private:
|
||||
static MainWindow* sm_mainWindowInstance;
|
||||
|
||||
private:
|
||||
QTreeView* m_treeView;
|
||||
caf::UiTreeModelPdm* m_treeModelPdm;
|
||||
caf::PdmUiPropertyView* m_pdmUiPropertyView;
|
||||
caf::PdmObjectGroup* m_testRoot;
|
||||
QUndoView* undoView;
|
||||
|
||||
caf::PdmUiTreeView* m_pdmUiTreeView;
|
||||
caf::PdmUiTreeView* m_pdmUiTreeView2;
|
||||
caf::PdmUiPropertyView* m_pdmUiPropertyView;
|
||||
caf::PdmUiTableView* m_pdmUiTableView;
|
||||
caf::PdmObjectGroup* m_testRoot;
|
||||
};
|
||||
|
||||
|
||||
@@ -0,0 +1,56 @@
|
||||
#include "TapCvfSpecialization.h"
|
||||
/*
|
||||
|
||||
#include "MainWindow.h"
|
||||
#include "WidgetLayoutTest.h"
|
||||
|
||||
#include <QDockWidget>
|
||||
#include <QTreeView>
|
||||
#include <QAction>
|
||||
#include <QMenuBar>
|
||||
#include <QUndoView>
|
||||
|
||||
|
||||
#include "cafAppEnum.h"
|
||||
#include "cafAppExecCommandManager.h"
|
||||
#include "cafCommandFeaturesCore.h"
|
||||
#include "cafCommandFeatureManager.h"
|
||||
#include "cafPdmDocument.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmUiFilePathEditor.h"
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiPropertyView.h"
|
||||
#include "cafPdmUiTableView.h"
|
||||
#include "cafPdmUiTextEditor.h"
|
||||
#include "cafPdmUiTreeView.h"
|
||||
#include "cafPdmReferenceHelper.h"
|
||||
#include "cafSelectionManager.h"
|
||||
#include "cafUiTreeModelPdm.h"
|
||||
#include "cafPdmProxyValueField.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
*/
|
||||
|
||||
CAF_PDM_SOURCE_INIT(TapCvfSpecialization, "TapCvfSpecialization");
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TapCvfSpecialization::TapCvfSpecialization()
|
||||
{
|
||||
CAF_PDM_InitObject("Test Object for type specializations", "", "", "");
|
||||
|
||||
/*
|
||||
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; }
|
||||
*/
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "..\LibCore\cvfBase.h"
|
||||
#include "..\LibCore\cvfColor3.h"
|
||||
#include "..\LibCore\cvfVector3.h"
|
||||
#include "..\LibCore\cvfMatrix4.h"
|
||||
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmField.h"
|
||||
|
||||
|
||||
|
||||
class TapCvfSpecialization : public caf::PdmObject
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
public:
|
||||
|
||||
TapCvfSpecialization();
|
||||
|
||||
caf::PdmField<cvf::Color3> m_colorField;
|
||||
caf::PdmField<cvf::Vec3d> m_vectorField;
|
||||
caf::PdmField<cvf::Mat4d> m_matrixField;
|
||||
|
||||
/*
|
||||
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;
|
||||
}
|
||||
}
|
||||
*/
|
||||
|
||||
};
|
||||
|
||||
96
Fwk/AppFwk/cafTests/cafTestCvfApplication/CMakeLists.txt
Normal file
@@ -0,0 +1,96 @@
|
||||
cmake_minimum_required (VERSION 2.8)
|
||||
|
||||
# Qt
|
||||
find_package ( Qt4 COMPONENTS QtCore QtGui QtMain QtOpenGl )
|
||||
include (${QT_USE_FILE})
|
||||
|
||||
project ( cafTestCvfApplication )
|
||||
|
||||
# Qt MOC
|
||||
set ( QT_MOC_HEADERS
|
||||
MainWindow.h
|
||||
WidgetLayoutTest.h
|
||||
)
|
||||
|
||||
qt4_wrap_cpp( MOC_FILES_CPP
|
||||
${QT_MOC_HEADERS}
|
||||
)
|
||||
|
||||
# Resource file
|
||||
set( QRC_FILES
|
||||
textedit.qrc
|
||||
)
|
||||
|
||||
# Runs RCC on specified files
|
||||
qt4_add_resources( QRC_FILES_CPP
|
||||
${QRC_FILES}
|
||||
)
|
||||
|
||||
include_directories (
|
||||
${LibCore_SOURCE_DIR}
|
||||
${LibGeometry_SOURCE_DIR}
|
||||
${LibGuiQt_SOURCE_DIR}
|
||||
${LibRender_SOURCE_DIR}
|
||||
${LibViewing_SOURCE_DIR}
|
||||
|
||||
${cafPdmCore_SOURCE_DIR}
|
||||
${cafPdmUiCore_SOURCE_DIR}
|
||||
${cafPdmXml_SOURCE_DIR}
|
||||
${cafProjectDataModel_SOURCE_DIR}
|
||||
|
||||
${cafCommand_SOURCE_DIR}
|
||||
# ${cafViewer_SOURCE_DIR}
|
||||
${cafUserInterface_SOURCE_DIR}
|
||||
${cafPdmCvf_SOURCE_DIR}
|
||||
# ${CommonCode_SOURCE_DIR}
|
||||
|
||||
)
|
||||
|
||||
set( PROJECT_FILES
|
||||
Main.cpp
|
||||
MainWindow.cpp
|
||||
WidgetLayoutTest.cpp
|
||||
|
||||
TapCvfSpecialization.cpp
|
||||
TapProject.cpp
|
||||
)
|
||||
|
||||
|
||||
# add the executable
|
||||
add_executable ( ${PROJECT_NAME}
|
||||
${PROJECT_FILES}
|
||||
${MOC_FILES_CPP}
|
||||
${QRC_FILES_CPP}
|
||||
)
|
||||
|
||||
target_link_libraries ( ${PROJECT_NAME}
|
||||
|
||||
LibCore
|
||||
|
||||
cafPdmCore
|
||||
cafPdmUiCore
|
||||
cafPdmXml
|
||||
cafProjectDataModel
|
||||
|
||||
cafCommand
|
||||
cafUserInterface
|
||||
|
||||
cafPdmCvf
|
||||
|
||||
${QT_LIBRARIES}
|
||||
)
|
||||
|
||||
source_group("" FILES ${PROJECT_FILES})
|
||||
|
||||
# Copy Qt Dlls
|
||||
if (MSVC)
|
||||
set (QTLIBLIST QtCore QtGui QtOpenGl)
|
||||
foreach (qtlib ${QTLIBLIST})
|
||||
|
||||
# Debug
|
||||
execute_process(COMMAND cmake -E copy_if_different ${QT_BINARY_DIR}/${qtlib}d4.dll ${CMAKE_CURRENT_BINARY_DIR}/Debug/${qtlib}d4.dll)
|
||||
|
||||
# Release
|
||||
execute_process(COMMAND cmake -E copy_if_different ${QT_BINARY_DIR}/${qtlib}4.dll ${CMAKE_CURRENT_BINARY_DIR}/Release/${qtlib}4.dll)
|
||||
endforeach( qtlib )
|
||||
endif(MSVC)
|
||||
17
Fwk/AppFwk/cafTests/cafTestCvfApplication/Main.cpp
Normal file
@@ -0,0 +1,17 @@
|
||||
|
||||
#include "MainWindow.h"
|
||||
|
||||
#include <QApplication>
|
||||
|
||||
#include "cafPdmFieldCvfColor.h"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication app(argc, argv);
|
||||
|
||||
MainWindow window;
|
||||
window.setWindowTitle("Ceetron Application Framework Test Application");
|
||||
window.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
||||
771
Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.cpp
Normal file
@@ -0,0 +1,771 @@
|
||||
|
||||
#include "cafPdmField.h"
|
||||
|
||||
#include "MainWindow.h"
|
||||
#include "WidgetLayoutTest.h"
|
||||
|
||||
#include <QDockWidget>
|
||||
#include <QTreeView>
|
||||
#include <QAction>
|
||||
#include <QMenuBar>
|
||||
#include <QUndoView>
|
||||
|
||||
|
||||
#include "cafAppEnum.h"
|
||||
#include "cafAppExecCommandManager.h"
|
||||
#include "cafCommandFeaturesCore.h"
|
||||
#include "cafCommandFeatureManager.h"
|
||||
#include "cafPdmDocument.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmUiFilePathEditor.h"
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiPropertyView.h"
|
||||
#include "cafPdmUiTableView.h"
|
||||
#include "cafPdmUiTextEditor.h"
|
||||
#include "cafPdmUiTreeView.h"
|
||||
#include "cafPdmReferenceHelper.h"
|
||||
#include "cafSelectionManager.h"
|
||||
#include "cafUiTreeModelPdm.h"
|
||||
#include "cafPdmProxyValueField.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
|
||||
|
||||
class DemoPdmObjectGroup: public caf::PdmObjectGroup
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
public:
|
||||
|
||||
DemoPdmObjectGroup()
|
||||
{
|
||||
|
||||
}
|
||||
};
|
||||
|
||||
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<double> m_doubleField;
|
||||
caf::PdmField<int> m_intField;
|
||||
caf::PdmField<QString> m_textField;
|
||||
caf::PdmProxyValueField<double> m_proxyDoubleField;
|
||||
|
||||
caf::PdmField<bool> 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<TestEnumType>(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<caf::PdmUiFieldHandle>()->setUiEditorTypeName(caf::PdmUiListEditor::uiEditorTypeName());
|
||||
}
|
||||
|
||||
caf::PdmField<double> m_doubleField;
|
||||
caf::PdmField<int> m_intField;
|
||||
caf::PdmField<QString> m_textField;
|
||||
caf::PdmField< caf::AppEnum<TestEnumType> > m_testEnumField;
|
||||
caf::PdmPtrField<SmallDemoPdmObjectA*> m_ptrField;
|
||||
|
||||
caf::PdmProxyValueField< caf::AppEnum<TestEnumType> > m_proxyEnumField;
|
||||
void setEnumMember(const caf::AppEnum<TestEnumType>& val) { m_proxyEnumMember = val; }
|
||||
caf::AppEnum<TestEnumType> enumMember() const { return m_proxyEnumMember; }
|
||||
TestEnumType m_proxyEnumMember;
|
||||
|
||||
|
||||
|
||||
caf::PdmField<bool> 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<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> options;
|
||||
|
||||
|
||||
if (&m_ptrField == fieldNeedingOptions)
|
||||
{
|
||||
caf::PdmFieldHandle* field;
|
||||
std::vector<caf::PdmObjectHandle*> 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 = caf::uiField(uiObject->userDescriptionField());
|
||||
if (uiFieldHandle)
|
||||
{
|
||||
userDesc = uiFieldHandle->uiValue().toString();
|
||||
}
|
||||
}
|
||||
|
||||
options.push_back(caf::PdmOptionItemInfo(uiObject->uiName() + "(" + userDesc + ")", QVariant::fromValue(caf::PdmPointer<caf::PdmObjectHandle>(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<SmallDemoPdmObjectA::TestEnumType>::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<SmallDemoPdmObjectA::TestEnumType>);
|
||||
|
||||
|
||||
|
||||
|
||||
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<caf::PdmUiFieldHandle>()->setUiEditorTypeName(caf::PdmUiFilePathEditor::uiEditorTypeName());
|
||||
m_filePath.capability<caf::PdmUiFieldHandle>()->setUiLabelPosition(caf::PdmUiItemInfo::TOP);
|
||||
m_longText.capability<caf::PdmUiFieldHandle>()->setUiEditorTypeName(caf::PdmUiTextEditor::uiEditorTypeName());
|
||||
m_longText.capability<caf::PdmUiFieldHandle>()->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<caf::PdmOptionItemInfo> calculateValueOptions(const caf::PdmFieldHandle* fieldNeedingOptions, bool * useOptionsOnly)
|
||||
{
|
||||
QList<caf::PdmOptionItemInfo> 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<caf::PdmObjectHandle>(m_objectListOfSameType[i]))));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (useOptionsOnly) *useOptionsOnly = true;
|
||||
|
||||
return options;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
virtual caf::PdmFieldHandle* userDescriptionField()
|
||||
{
|
||||
return &m_textField;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// Fields
|
||||
caf::PdmField<bool> m_boolField;
|
||||
caf::PdmField<double> m_doubleField;
|
||||
caf::PdmField<int> m_intField;
|
||||
caf::PdmField<QString> m_textField;
|
||||
|
||||
caf::PdmField<QString> m_filePath;
|
||||
|
||||
caf::PdmField<QString> m_longText;
|
||||
caf::PdmField<std::vector<QString> > m_multiSelectList;
|
||||
|
||||
|
||||
caf::PdmChildArrayField< caf::PdmObjectHandle* > m_objectList;
|
||||
caf::PdmChildArrayField< SmallDemoPdmObjectA* > m_objectListOfSameType;
|
||||
caf::PdmPtrField<SmallDemoPdmObjectA*> m_ptrField;
|
||||
|
||||
|
||||
caf::PdmField<bool> 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");
|
||||
|
||||
|
||||
|
||||
MainWindow* MainWindow::sm_mainWindowInstance = NULL;
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
MainWindow::MainWindow()
|
||||
{
|
||||
// Initialize command framework
|
||||
|
||||
// Register default command features (add/delete item in list)
|
||||
|
||||
caf::AppExecCommandManager::instance()->enableUndoStack(true);
|
||||
|
||||
m_treeView = NULL;
|
||||
m_treeModelPdm = NULL;
|
||||
|
||||
createActions();
|
||||
createDockPanels();
|
||||
|
||||
buildTestModel();
|
||||
setPdmRoot(m_testRoot);
|
||||
|
||||
sm_mainWindowInstance = this;
|
||||
caf::SelectionManager::instance()->setPdmRootObject(m_testRoot);
|
||||
|
||||
undoView->setStack(caf::AppExecCommandManager::instance()->undoStack());
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::createDockPanels()
|
||||
{
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("Workspace", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
m_treeView = new QTreeView(dockWidget);
|
||||
dockWidget->setWidget(m_treeView);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("PdmTreeView", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
m_pdmUiTreeView = new caf::PdmUiTreeView(dockWidget);
|
||||
dockWidget->setWidget(m_pdmUiTreeView);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
/*
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("WidgetLayoutTest", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
WidgetLayoutTest* widgetLayoutTest = new WidgetLayoutTest(dockWidget);
|
||||
dockWidget->setWidget(widgetLayoutTest);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
*/
|
||||
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("cafPropertyView", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
m_pdmUiPropertyView = new caf::PdmUiPropertyView(dockWidget);
|
||||
dockWidget->setWidget(m_pdmUiPropertyView);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("cafTableView", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
m_pdmUiTableView = new caf::PdmUiTableView(dockWidget);
|
||||
m_pdmUiTableView->setSelectionRole(caf::SelectionManager::CURRENT);
|
||||
m_pdmUiTableView->enableDefaultContextMenu(true);
|
||||
|
||||
dockWidget->setWidget(m_pdmUiTableView);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("PdmTreeView2", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
m_pdmUiTreeView2 = new caf::PdmUiTreeView(dockWidget);
|
||||
m_pdmUiTreeView2->enableDefaultContextMenu(true);
|
||||
dockWidget->setWidget(m_pdmUiTreeView2);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
|
||||
{
|
||||
QDockWidget* dockWidget = new QDockWidget("Undo stack", this);
|
||||
dockWidget->setObjectName("dockWidget");
|
||||
dockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
|
||||
undoView = new QUndoView(this);
|
||||
dockWidget->setWidget(undoView);
|
||||
|
||||
addDockWidget(Qt::LeftDockWidgetArea, dockWidget);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::buildTestModel()
|
||||
{
|
||||
m_testRoot = new DemoPdmObjectGroup;
|
||||
|
||||
DemoPdmObject* demoObject = new DemoPdmObject;
|
||||
m_testRoot->addObject(demoObject);
|
||||
|
||||
SmallDemoPdmObject* smallObj1 = new SmallDemoPdmObject;
|
||||
m_testRoot->addObject(smallObj1);
|
||||
|
||||
SmallDemoPdmObjectA* smallObj2 = new SmallDemoPdmObjectA;
|
||||
m_testRoot->addObject(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;
|
||||
}
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::setPdmRoot(caf::PdmObjectHandle* pdmRoot)
|
||||
{
|
||||
caf::PdmUiTreeItem* treeItemRoot = caf::UiTreeItemBuilderPdm::buildViewItems(NULL, 0, pdmRoot);
|
||||
|
||||
if (!m_treeModelPdm)
|
||||
{
|
||||
m_treeModelPdm = new caf::UiTreeModelPdm(this);
|
||||
}
|
||||
|
||||
m_treeModelPdm->setTreeItemRoot(treeItemRoot);
|
||||
|
||||
assert(m_treeView);
|
||||
m_treeView->setModel(m_treeModelPdm);
|
||||
|
||||
if (treeItemRoot)
|
||||
{
|
||||
if (m_treeView->selectionModel())
|
||||
{
|
||||
connect(m_treeView->selectionModel(), SIGNAL(selectionChanged( const QItemSelection & , const QItemSelection & )), SLOT(slotSelectionChanged( const QItemSelection & , const QItemSelection & )));
|
||||
}
|
||||
}
|
||||
|
||||
caf::PdmUiObjectHandle* uiObject = uiObj(pdmRoot);
|
||||
if (uiObject)
|
||||
{
|
||||
m_pdmUiTreeView->setPdmItem(uiObject);
|
||||
}
|
||||
|
||||
connect(m_pdmUiTreeView, SIGNAL(selectionChanged()), SLOT(slotSimpleSelectionChanged()));
|
||||
|
||||
// Set up test of using a field as a root item
|
||||
// Hack, because we know that pdmRoot is a PdmObjectGroup ...
|
||||
|
||||
std::vector<caf::PdmFieldHandle*> fields;
|
||||
pdmRoot->fields(fields);
|
||||
if (fields.size())
|
||||
{
|
||||
caf::PdmFieldHandle* field = fields[0];
|
||||
caf::PdmUiFieldHandle* uiFieldHandle = uiField(field);
|
||||
if (uiFieldHandle)
|
||||
{
|
||||
m_pdmUiTreeView2->setPdmItem(uiFieldHandle);
|
||||
uiFieldHandle->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
|
||||
if (uiObject)
|
||||
{
|
||||
m_pdmUiTreeView2->setPdmItem(uiObject);
|
||||
}
|
||||
|
||||
connect(m_pdmUiTreeView2, SIGNAL(selectionChanged()), SLOT(slotShowTableView()));
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
MainWindow::~MainWindow()
|
||||
{
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::releaseTestData()
|
||||
{
|
||||
m_treeView->setModel(NULL);
|
||||
if (m_treeModelPdm)
|
||||
{
|
||||
delete m_treeModelPdm;
|
||||
}
|
||||
|
||||
if (m_testRoot)
|
||||
{
|
||||
m_testRoot->deleteObjects();
|
||||
delete m_testRoot;
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
MainWindow* MainWindow::instance()
|
||||
{
|
||||
return sm_mainWindowInstance;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::createActions()
|
||||
{
|
||||
// Create actions
|
||||
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);
|
||||
editMenu->addAction(editRemove);
|
||||
editMenu->addAction(editRemoveAll);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotInsert()
|
||||
{
|
||||
std::vector<caf::PdmUiItem*> selection;
|
||||
m_pdmUiTreeView->selectedObjects(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)
|
||||
{
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotRemove()
|
||||
{
|
||||
std::vector<caf::PdmUiItem*> selection;
|
||||
m_pdmUiTreeView->selectedObjects(selection);
|
||||
|
||||
for (size_t i = 0; i < selection.size(); ++i)
|
||||
{
|
||||
caf::PdmObjectHandle* obj = dynamic_cast< caf::PdmObjectHandle*>(selection[i]);
|
||||
if (obj)
|
||||
{
|
||||
caf::PdmFieldHandle* field = obj->parentField();
|
||||
|
||||
// Ordering is important
|
||||
|
||||
field->removeChildObject(obj);
|
||||
|
||||
// Delete object
|
||||
delete obj;
|
||||
|
||||
// Update editors
|
||||
caf::PdmUiFieldHandle* uiFieldHandle = uiField(field);
|
||||
if (uiFieldHandle)
|
||||
{
|
||||
uiFieldHandle->updateConnectedEditors();
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotRemoveAll()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotSelectionChanged(const QItemSelection & selected, const QItemSelection & deselected )
|
||||
{
|
||||
if (selected.indexes().size() == 1)
|
||||
{
|
||||
QModelIndex mi = selected.indexes()[0];
|
||||
caf::PdmUiTreeItem* treeItem = m_treeModelPdm->getTreeItemFromIndex(mi);
|
||||
if (treeItem && treeItem->dataObject())
|
||||
{
|
||||
m_pdmUiPropertyView->showProperties(treeItem->dataObject());
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_pdmUiPropertyView->showProperties(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotSimpleSelectionChanged()
|
||||
{
|
||||
std::vector<caf::PdmUiItem*> selection;
|
||||
m_pdmUiTreeView->selectedObjects(selection);
|
||||
caf::PdmObjectHandle* obj = NULL;
|
||||
caf::PdmChildArrayFieldHandle* listField = NULL;
|
||||
|
||||
if (selection.size())
|
||||
{
|
||||
caf::PdmUiObjectHandle* pdmUiObj = dynamic_cast<caf::PdmUiObjectHandle*>( selection[0] );
|
||||
if (pdmUiObj) obj = pdmUiObj->owner();
|
||||
}
|
||||
|
||||
m_pdmUiPropertyView->showProperties(obj);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void MainWindow::slotShowTableView()
|
||||
{
|
||||
std::vector<caf::PdmUiItem*> selection;
|
||||
m_pdmUiTreeView2->selectedObjects(selection);
|
||||
caf::PdmObjectHandle* obj = NULL;
|
||||
caf::PdmChildArrayFieldHandle* listField = NULL;
|
||||
|
||||
if (selection.size())
|
||||
{
|
||||
caf::PdmUiItem* pdmUiItem = selection[0];
|
||||
|
||||
caf::PdmUiFieldHandle* guiField = dynamic_cast<caf::PdmUiFieldHandle*>(pdmUiItem);
|
||||
|
||||
if (guiField) listField = dynamic_cast<caf::PdmChildArrayFieldHandle*>(guiField->fieldHandle());
|
||||
|
||||
if (listField)
|
||||
{
|
||||
if (!listField->hasSameFieldCountForAllObjects())
|
||||
{
|
||||
listField = NULL;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
m_pdmUiTableView->setListField(listField);
|
||||
if (listField)
|
||||
{
|
||||
listField->capability<caf::PdmUiFieldHandle>()->updateConnectedEditors();
|
||||
}
|
||||
}
|
||||
66
Fwk/AppFwk/cafTests/cafTestCvfApplication/MainWindow.h
Normal file
@@ -0,0 +1,66 @@
|
||||
#pragma once
|
||||
|
||||
#include <QtGui/QMainWindow>
|
||||
#include <QAbstractItemModel>
|
||||
#include <QItemSelection>
|
||||
|
||||
class DemoPdmObject;
|
||||
class QTreeView;
|
||||
class QUndoView;
|
||||
|
||||
namespace caf
|
||||
{
|
||||
class PdmObjectGroup;
|
||||
class PdmObjectHandle;
|
||||
class UiTreeModelPdm;
|
||||
class PdmUiPropertyView;
|
||||
class PdmUiTreeView;
|
||||
class PdmUiTableView;
|
||||
}
|
||||
|
||||
class MainWindow : public QMainWindow
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
MainWindow();
|
||||
~MainWindow();
|
||||
|
||||
static MainWindow* instance();
|
||||
void setPdmRoot(caf::PdmObjectHandle* pdmRoot);
|
||||
|
||||
private:
|
||||
void createActions();
|
||||
void createMenus();
|
||||
void createToolBars();
|
||||
void createDockPanels();
|
||||
|
||||
|
||||
void buildTestModel();
|
||||
void releaseTestData();
|
||||
|
||||
private slots:
|
||||
void slotInsert();
|
||||
void slotRemove();
|
||||
void slotRemoveAll();
|
||||
void slotSelectionChanged(const QItemSelection &, const QItemSelection & );
|
||||
void slotSimpleSelectionChanged();
|
||||
void slotShowTableView();
|
||||
|
||||
|
||||
private:
|
||||
static MainWindow* sm_mainWindowInstance;
|
||||
|
||||
private:
|
||||
QTreeView* m_treeView;
|
||||
QUndoView* undoView;
|
||||
|
||||
caf::UiTreeModelPdm* m_treeModelPdm;
|
||||
caf::PdmUiTreeView* m_pdmUiTreeView;
|
||||
caf::PdmUiTreeView* m_pdmUiTreeView2;
|
||||
caf::PdmUiPropertyView* m_pdmUiPropertyView;
|
||||
caf::PdmUiTableView* m_pdmUiTableView;
|
||||
caf::PdmObjectGroup* m_testRoot;
|
||||
|
||||
};
|
||||
|
||||
@@ -0,0 +1,60 @@
|
||||
#include "TapCvfSpecialization.h"
|
||||
/*
|
||||
|
||||
#include "MainWindow.h"
|
||||
#include "WidgetLayoutTest.h"
|
||||
|
||||
#include <QDockWidget>
|
||||
#include <QTreeView>
|
||||
#include <QAction>
|
||||
#include <QMenuBar>
|
||||
#include <QUndoView>
|
||||
|
||||
|
||||
#include "cafAppEnum.h"
|
||||
#include "cafAppExecCommandManager.h"
|
||||
#include "cafCommandFeaturesCore.h"
|
||||
#include "cafCommandFeatureManager.h"
|
||||
#include "cafPdmDocument.h"
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmUiFilePathEditor.h"
|
||||
#include "cafPdmUiListEditor.h"
|
||||
#include "cafPdmUiPropertyView.h"
|
||||
#include "cafPdmUiTableView.h"
|
||||
#include "cafPdmUiTextEditor.h"
|
||||
#include "cafPdmUiTreeView.h"
|
||||
#include "cafPdmReferenceHelper.h"
|
||||
#include "cafSelectionManager.h"
|
||||
#include "cafUiTreeModelPdm.h"
|
||||
#include "cafPdmProxyValueField.h"
|
||||
#include "cafPdmPtrField.h"
|
||||
*/
|
||||
|
||||
CAF_PDM_SOURCE_INIT(TapCvfSpecialization, "TapCvfSpecialization");
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TapCvfSpecialization::TapCvfSpecialization()
|
||||
{
|
||||
CAF_PDM_InitObject("Test Object for type specializations", "", "", "");
|
||||
|
||||
CAF_PDM_InitField(&m_vectorField, "m_vectorField", cvf::Vec3d::ZERO, "Start Point", "", "", "");
|
||||
CAF_PDM_InitField(&m_matrixField, "m_matrixField", cvf::Mat4d::ZERO, "Zero matrix", "", "", "");
|
||||
CAF_PDM_InitField(&m_colorField, "m_colorField", cvf::Color3f(cvf::Color3::GREEN), "Color3f", "", "", "");
|
||||
|
||||
/*
|
||||
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; }
|
||||
*/
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
#pragma once
|
||||
|
||||
|
||||
#include "cvfBase.h"
|
||||
#include "cvfColor3.h"
|
||||
#include "cvfVector3.h"
|
||||
#include "cvfMatrix4.h"
|
||||
|
||||
#include "cafPdmObject.h"
|
||||
#include "cafPdmField.h"
|
||||
|
||||
#include "cafPdmFieldCvfColor.h"
|
||||
#include "cafPdmFieldCvfVec3d.h"
|
||||
#include "cafPdmFieldCvfMat4d.h"
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
};
|
||||
|
||||
20
Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.cpp
Normal file
@@ -0,0 +1,20 @@
|
||||
#include "TapProject.h"
|
||||
|
||||
CAF_PDM_SOURCE_INIT(TapProject, "RPMProject");
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TapProject::TapProject(void)
|
||||
{
|
||||
CAF_PDM_InitFieldNoDefault(&m_objectList, "ObjectList", "Objects list Field", "", "List", "This is a list of PdmObjects");
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
TapProject::~TapProject(void)
|
||||
{
|
||||
|
||||
}
|
||||
17
Fwk/AppFwk/cafTests/cafTestCvfApplication/TapProject.h
Normal file
@@ -0,0 +1,17 @@
|
||||
#pragma once
|
||||
|
||||
#include "cafPdmDocument.h"
|
||||
|
||||
|
||||
|
||||
class TapProject : public caf::PdmDocument
|
||||
{
|
||||
CAF_PDM_HEADER_INIT;
|
||||
|
||||
public:
|
||||
TapProject(void);
|
||||
virtual ~TapProject(void);
|
||||
|
||||
caf::PdmChildArrayField< caf::PdmObjectHandle* > m_objectList;
|
||||
|
||||
};
|
||||
108
Fwk/AppFwk/cafTests/cafTestCvfApplication/WidgetLayoutTest.cpp
Normal file
@@ -0,0 +1,108 @@
|
||||
|
||||
#include "WidgetLayoutTest.h"
|
||||
|
||||
#include <QGridLayout>
|
||||
#include <QLineEdit>
|
||||
#include <QPushButton>
|
||||
#include <QGroupBox>
|
||||
#include <QLabel>
|
||||
|
||||
|
||||
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
WidgetLayoutTest::WidgetLayoutTest(QWidget* parent /*= 0*/, Qt::WindowFlags f /*= 0*/)
|
||||
: QWidget(parent, f)
|
||||
{
|
||||
QVBoxLayout* l = new QVBoxLayout;
|
||||
setLayout(l);
|
||||
|
||||
{
|
||||
QPushButton* b1 = new QPushButton("Original config", this);
|
||||
connect(b1, SIGNAL(clicked()), SLOT(setUpInitialConfiguration()));
|
||||
l->addWidget(b1);
|
||||
}
|
||||
|
||||
{
|
||||
QPushButton* b1 = new QPushButton("Config A", this);
|
||||
connect(b1, SIGNAL(clicked()), SLOT(setUpInitialConfigurationA()));
|
||||
l->addWidget(b1);
|
||||
}
|
||||
|
||||
{
|
||||
QPushButton* b1 = new QPushButton("Config B", this);
|
||||
connect(b1, SIGNAL(clicked()), SLOT(setUpInitialConfigurationB()));
|
||||
l->addWidget(b1);
|
||||
}
|
||||
|
||||
m_mainLayout = new QGridLayout();
|
||||
l->addLayout(m_mainLayout);
|
||||
|
||||
// Create widgets
|
||||
m_widget1 = new QLineEdit("1", this);
|
||||
m_widget2 = new QLineEdit("2", this);
|
||||
m_widget3 = new QLineEdit("3", this);
|
||||
m_widget4 = new QLineEdit("4", this);
|
||||
m_widget5 = new QLineEdit("5", 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_groupBoxBLayout = new QGridLayout();
|
||||
m_groupBoxB->setLayout(m_groupBoxBLayout);
|
||||
|
||||
setUpInitialConfiguration();
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
WidgetLayoutTest::~WidgetLayoutTest()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void WidgetLayoutTest::setUpInitialConfiguration()
|
||||
{
|
||||
m_mainLayout->addWidget(m_widget1);
|
||||
|
||||
m_mainLayout->addWidget(m_groupBoxA);
|
||||
|
||||
m_groupBoxALayout->addWidget(m_widget2, 0, 0);
|
||||
if (!m_widget3)
|
||||
{
|
||||
m_widget3 = new QLabel("Test label", this);
|
||||
}
|
||||
m_groupBoxALayout->addWidget(m_widget3, 1, 0);
|
||||
m_groupBoxALayout->addWidget(m_groupBoxB, 2, 0);
|
||||
|
||||
m_groupBoxBLayout->addWidget(m_widget4);
|
||||
|
||||
m_mainLayout->addWidget(m_widget5);
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void WidgetLayoutTest::setUpInitialConfigurationA()
|
||||
{
|
||||
m_mainLayout->addWidget(m_widget2);
|
||||
|
||||
delete m_widget3;
|
||||
m_widget3 = NULL;
|
||||
}
|
||||
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
///
|
||||
//--------------------------------------------------------------------------------------------------
|
||||
void WidgetLayoutTest::setUpInitialConfigurationB()
|
||||
{
|
||||
m_mainLayout->addWidget(m_widget4);
|
||||
}
|
||||
41
Fwk/AppFwk/cafTests/cafTestCvfApplication/WidgetLayoutTest.h
Normal file
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
#include <QtGui/QWidget>
|
||||
|
||||
|
||||
class QGridLayout;
|
||||
class QGroupBox;
|
||||
|
||||
|
||||
|
||||
class WidgetLayoutTest : public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
WidgetLayoutTest(QWidget* parent = 0, Qt::WindowFlags f = 0);
|
||||
~WidgetLayoutTest();
|
||||
|
||||
private:
|
||||
QGridLayout* m_mainLayout;
|
||||
|
||||
QGroupBox* m_groupBoxA;
|
||||
QGridLayout* m_groupBoxALayout;
|
||||
|
||||
QGroupBox* m_groupBoxB;
|
||||
QGridLayout* m_groupBoxBLayout;
|
||||
|
||||
QWidget* m_widget1;
|
||||
QWidget* m_widget2;
|
||||
QWidget* m_widget3;
|
||||
QWidget* m_widget4;
|
||||
QWidget* m_widget5;
|
||||
|
||||
private slots:
|
||||
void setUpInitialConfiguration();
|
||||
|
||||
void setUpInitialConfigurationA();
|
||||
void setUpInitialConfigurationB();
|
||||
|
||||
};
|
||||
|
||||
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/logo32.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/mac/editcut.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/mac/filenew.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 2.1 KiB |
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/mac/zoomin.png
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/mac/zoomout.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/win/editcut.png
Normal file
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.7 KiB |
|
After Width: | Height: | Size: 1.0 KiB |
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/win/filenew.png
Normal file
|
After Width: | Height: | Size: 768 B |
|
After Width: | Height: | Size: 1.6 KiB |
|
After Width: | Height: | Size: 1.4 KiB |
|
After Width: | Height: | Size: 1.2 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 627 B |
|
After Width: | Height: | Size: 829 B |
|
After Width: | Height: | Size: 695 B |
|
After Width: | Height: | Size: 673 B |
|
After Width: | Height: | Size: 677 B |
|
After Width: | Height: | Size: 971 B |
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/win/zoomin.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
Fwk/AppFwk/cafTests/cafTestCvfApplication/images/win/zoomout.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
43
Fwk/AppFwk/cafTests/cafTestCvfApplication/textedit.qrc
Normal file
@@ -0,0 +1,43 @@
|
||||
<!DOCTYPE RCC><RCC version="1.0">
|
||||
<qresource prefix="/">
|
||||
<file>images/logo32.png</file>
|
||||
<file>images/mac/editcopy.png</file>
|
||||
<file>images/mac/editcut.png</file>
|
||||
<file>images/mac/editpaste.png</file>
|
||||
<file>images/mac/editredo.png</file>
|
||||
<file>images/mac/editundo.png</file>
|
||||
<file>images/mac/exportpdf.png</file>
|
||||
<file>images/mac/filenew.png</file>
|
||||
<file>images/mac/fileopen.png</file>
|
||||
<file>images/mac/fileprint.png</file>
|
||||
<file>images/mac/filesave.png</file>
|
||||
<file>images/mac/textbold.png</file>
|
||||
<file>images/mac/textcenter.png</file>
|
||||
<file>images/mac/textitalic.png</file>
|
||||
<file>images/mac/textjustify.png</file>
|
||||
<file>images/mac/textleft.png</file>
|
||||
<file>images/mac/textright.png</file>
|
||||
<file>images/mac/textunder.png</file>
|
||||
<file>images/mac/zoomin.png</file>
|
||||
<file>images/mac/zoomout.png</file>
|
||||
<file>images/win/editcopy.png</file>
|
||||
<file>images/win/editcut.png</file>
|
||||
<file>images/win/editpaste.png</file>
|
||||
<file>images/win/editredo.png</file>
|
||||
<file>images/win/editundo.png</file>
|
||||
<file>images/win/exportpdf.png</file>
|
||||
<file>images/win/filenew.png</file>
|
||||
<file>images/win/fileopen.png</file>
|
||||
<file>images/win/fileprint.png</file>
|
||||
<file>images/win/filesave.png</file>
|
||||
<file>images/win/textbold.png</file>
|
||||
<file>images/win/textcenter.png</file>
|
||||
<file>images/win/textitalic.png</file>
|
||||
<file>images/win/textjustify.png</file>
|
||||
<file>images/win/textleft.png</file>
|
||||
<file>images/win/textright.png</file>
|
||||
<file>images/win/textunder.png</file>
|
||||
<file>images/win/zoomin.png</file>
|
||||
<file>images/win/zoomout.png</file>
|
||||
</qresource>
|
||||
</RCC>
|
||||