00001
00002
00004
00005 #include <animal/X3DTK/Qt/mainControllerGUI/MainController.h>
00006
00007 #include "x3dTransformQt.h"
00008
00009 namespace X3DTK
00010 {
00011 namespace Qt
00012 {
00013
00014 X3DTransformQt::X3DTransformQt( X3D::FrameNode * frameNode,
00015 FieldList & fieldList,
00016 QWidget* parent)
00017 : ObjectGUI(fieldList, parent)
00018 , frameNode(frameNode)
00019 {
00020
00021
00022
00023 connect(this, SIGNAL( changed() ), this, SLOT( update()));
00024 }
00025
00026 void X3DTransformQt::update()
00027 {
00028 frameNode->updateFrameNode();
00029 }
00030
00032 QWidget * createTransformQWidget(X3D::Transform * node, QWidget * parent)
00033 {
00034
00035
00036
00037
00038 MainController * MC = dynamic_cast<MainController *>(parent->parent()->parent()->parent());
00039 if (node && MC)
00040 {
00041
00042 X3D::FrameNode * frameNode = NULL;
00043
00044
00045 MFNode childList = node->getChildList();
00046 for(MFNode::iterator it = childList.begin() ; it != childList.end() ; ++it)
00047 {
00048 if (X3D::FrameNode * FN = dynamic_cast<X3D::FrameNode *>(*it))
00049 if (!frameNode)
00050 frameNode = FN;
00051 else
00052 {
00053 std::cerr<<"Warning createTransformQWidget(): impossible to create a X3DTK::Qt::X3DTransformQt because there is not only one associated X3DTK::X3D::FrameNode"<<std::endl;
00054 return NULL;
00055 }
00056 }
00057 if (!frameNode)
00058 {
00059 frameNode = new X3D::FrameNode();
00060 MC->addNode(frameNode);
00061 }
00062
00063
00064 FieldList fieldList;
00065
00066
00067 fieldList.push_back(new X3DSFVec3f("Translation", &frameNode->translation));
00068
00069
00070 fieldList.push_back(new X3DSFRotation("Rotation (angle in radian)", &frameNode->rotation));
00071
00072
00073 fieldList.push_back(new X3DSFVec3f("Scale", &frameNode->scale));
00074
00075
00076 fieldList.push_back(new X3DSFRotation("Scale orientation (angle in radian)", &frameNode->scaleOrientation));
00077
00078
00079 fieldList.push_back(new X3DSFVec3f("Center", &frameNode->center));
00080
00081
00082
00083
00084
00085 X3DTransformQt * X3DTransformGUI = new X3DTransformQt(frameNode, fieldList, parent);
00086 X3DTransformGUI->setTabLabel(X3DTransformGUI->page(0), QString("Transform"));
00087
00088
00089
00090
00091
00092 return X3DTransformGUI;
00093 }
00094 else
00095 {
00096 std::cerr<<"Warning createTransformQWidget(): impossible to create a X3DTK::Qt::X3DTransformQt because the associated X3D::Transform is NULL."<<std::endl;
00097 std::cerr<<" or the QWidget Parent is not a MainController"<<std::endl;
00098 }
00099 return NULL;
00100 }
00101
00102 }
00103 }