Documentation


Fields.h

Go to the documentation of this file.
00001 
00002 //                            Fields.h                                        //
00004 
00005 #ifndef FIELDS_H
00006 #define FIELDS_H
00007 
00008 #include <sstream>
00009 
00010 #include <qwidget.h>
00011 #include <qtabwidget.h>
00012 #include <qlayout.h>
00013 #include <qscrollview.h>
00014 #include <qframe.h>
00015 #include <qpushbutton.h>
00016 
00017 #include "SFFloatGUI.h"
00018 #include "SFIntGUI.h"
00019 #include "SFVector2GUI.h"
00020 #include "SFVector3GUI.h"
00021 #include "SFVector4GUI.h"
00022 #include "SFStringGUI.h"
00023 #include "SFBoolGUI.h"
00024 #include "MFEditor.h"
00025 
00026 #include "X3DSFVec2fGUI.h"
00027 #include "X3DSFVec3fGUI.h"
00028 #include "X3DSFRotationGUI.h"
00029 
00030 //#include <animal/X3DTK/Qt/mainControllerGUI/MainController.h>
00031 
00032 namespace X3DTK {
00033 namespace Qt{
00034 
00035 class ObjectGUI;
00036 
00063 //------------------------------------------------------------------------------
00064 
00066 inline std::istream& operator >> ( std::istream& in, X3DTK::SFVec2f& a )
00067 {
00068   in >> a.x >> a.y;
00069   return in;
00070 }
00071 //------------------------------------------------------------------------------
00072 
00074 inline std::istream& operator >> ( std::istream& in, X3DTK::SFVec3f& a )
00075 {
00076   in >> a.x >> a.y >> a.z;
00077   return in;
00078 }    
00079 //------------------------------------------------------------------------------
00080 
00082 inline std::istream& operator >> ( std::istream& in, X3DTK::SFRotation& a )
00083 {
00084   in >> a.x >> a.y >> a.z >> a.angle;
00085   return in;
00086 }    
00087 
00088 //------------------------------------------------------------------------------
00093   class  Field{
00094     public:
00095     
00097       QString name;
00098       
00100       void * pointer;
00101     
00102       Field(QString name, void * pointer)
00103       : name(name), pointer(pointer){}
00104       
00105       virtual ~Field(){};
00106       
00108       virtual void add(QWidget * parent)=0;//, MainController * MC)=0;
00109      
00110   
00111   } ;
00112 //------------------------------------------------------------------------------  
00115   class  AbstractMField : public Field {
00116     public:
00117     
00119       unsigned int nbColumns;
00120       
00125       bool edit;
00126       
00127       AbstractMField(QString name, void * pointer, unsigned int nbColumns=1, bool edit=false)
00128       : Field(name, pointer)
00129       , nbColumns(nbColumns)
00130       , edit(edit)
00131       {}
00132       
00134       virtual QString read()=0;
00135       
00137       virtual void write(QString s)=0;
00138   } ;
00139 //------------------------------------------------------------------------------ 
00141   typedef std::list<Field *> FieldList;
00142 //------------------------------------------------------------------------------  
00144   template <typename TypeSField>
00145   class  SField : public Field { 
00146     public:
00147       SField(QString name, void * pointer)
00148       : Field(name, pointer){}
00149       
00151       virtual QWidget* SFieldGUI(QString name, TypeSField * ptr, QWidget * parent)=0;
00152       
00154       virtual void add(QWidget * parent);//, MainController * MC);
00155 
00156   } ;  
00157 //------------------------------------------------------------------------------ 
00159   template <typename TypeSField>
00160   class  MField : public AbstractMField {
00161     protected:
00163       QWidget * MFtab;
00165       QGridLayout * MFtabLayout;
00167       std::list<QWidget *> chidrenMFtabList;
00169       ObjectGUI * objectGUI;
00171       //MainController * mainController;
00172     public:
00173       
00174       MField(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00175       : AbstractMField(name, pointer, nbColumns, edit)
00176       , MFtab(NULL)
00177       , MFtabLayout(NULL)
00178       , objectGUI(NULL)
00179       {}
00180       
00182       virtual QWidget* SFieldGUI(QString name, TypeSField * ptr, QWidget * parent)=0;
00183       
00185       virtual void add(QWidget * parent);//, MainController * MC);
00186       
00188       virtual QString read();
00189       
00191       virtual void write(QString s);
00192   } ;
00193 //------------------------------------------------------------------------------  
00195   class  SFFloat : public SField<float> {
00196     public:
00197              
00198       SFFloat(QString name, void * pointer)
00199       : SField<float>(name, pointer){}
00200       
00202       virtual QWidget* SFieldGUI(QString name, float * ptr, QWidget * parent)
00203       {
00204         return new SFFloatGUI(name, ptr, parent);
00205       }
00206       
00207   } ;
00208 //------------------------------------------------------------------------------  
00210   class  SFInt : public SField<int> {
00211     public:
00212              
00213       SFInt(QString name, void * pointer)
00214       : SField<int>(name, pointer){}
00215       
00217       virtual QWidget* SFieldGUI(QString name, int * ptr, QWidget * parent)
00218       {
00219         return new SFIntGUI(name, ptr, parent);
00220       }
00221       
00222   } ;
00223 //------------------------------------------------------------------------------  
00225   class  SFVector2 : public SField<animal::Vec2> {
00226     public:
00227              
00228       SFVector2(QString name, void * pointer)
00229       : SField<animal::Vec2>(name, pointer){}
00230       
00232       virtual QWidget* SFieldGUI(QString name, animal::Vec2 * ptr, QWidget * parent)
00233       {
00234         return new SFVector2GUI(name, ptr, parent);
00235       }
00236       
00237   } ;
00238 //------------------------------------------------------------------------------  
00240   class  SFVector3 : public SField<animal::Vec3> {
00241     public:
00242              
00243       SFVector3(QString name, void * pointer)
00244       : SField<animal::Vec3>(name, pointer){}
00245       
00247       virtual QWidget* SFieldGUI(QString name, animal::Vec3 * ptr, QWidget * parent)
00248       {
00249         return new SFVector3GUI(name, ptr, parent);
00250       }
00251       
00252   } ;
00253 //------------------------------------------------------------------------------  
00255   class  SFVector4 : public SField<animal::Vec4> {
00256     public:
00257              
00258       SFVector4(QString name, void * pointer)
00259       : SField<animal::Vec4>(name, pointer){}
00260       
00262       virtual QWidget* SFieldGUI(QString name, animal::Vec4 * ptr, QWidget * parent)
00263       {
00264         return new SFVector4GUI(name, ptr, parent);
00265       }
00266       
00267   } ;
00268 //------------------------------------------------------------------------------  
00270   class  SFString : public SField<QString> {
00271     public:
00272              
00273       SFString(QString name, void * pointer)
00274       : SField<QString>(name, pointer){}
00275       
00277       virtual QWidget* SFieldGUI(QString name, QString * ptr, QWidget * parent)
00278       {
00279         return new SFStringGUI(name, ptr, parent);
00280       }
00281       
00282   } ;
00283 //------------------------------------------------------------------------------  
00285   class  SFBool : public SField<bool> {
00286     public:
00287              
00288       SFBool(QString name, void * pointer)
00289       : SField<bool>(name, pointer){}
00290       
00292       virtual QWidget* SFieldGUI(QString name, bool * ptr, QWidget * parent)
00293       {
00294         return new SFBoolGUI(name, ptr, parent);
00295       }
00296       
00297   } ;
00298 //------------------------------------------------------------------------------  
00299 
00301   class  MFFloat : public MField<float> {
00302     public:
00303              
00304       MFFloat(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00305       : MField<float>(name, pointer, nbColumns, edit){}
00306       
00308       virtual QWidget* SFieldGUI(QString name, float * ptr, QWidget * parent)
00309       {
00310         return new SFFloatGUI(name, ptr, parent);
00311       }
00312       
00313   } ;
00314 //------------------------------------------------------------------------------  
00316   class  MFInt : public MField<int> {
00317     public:
00318              
00319       MFInt(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00320       : MField<int>(name, pointer, nbColumns, edit){}
00321       
00323       virtual QWidget* SFieldGUI(QString name, int * ptr, QWidget * parent)
00324       {
00325         return new SFIntGUI(name, ptr, parent);
00326       }
00327       
00328   } ;
00329 //------------------------------------------------------------------------------  
00331   class  MFVector2 : public MField<animal::Vec2> {
00332     public:
00333              
00334       MFVector2(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00335       : MField<animal::Vec2>(name, pointer, nbColumns, edit){}
00336       
00338       virtual QWidget* SFieldGUI(QString name, animal::Vec2 * ptr, QWidget * parent)
00339       {
00340         return new SFVector2GUI(name, ptr, parent);
00341       }
00342       
00343   } ;
00344 //------------------------------------------------------------------------------  
00346   class  MFVector3 : public MField<animal::Vec3> {
00347     public:
00348              
00349       MFVector3(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00350       : MField<animal::Vec3>(name, pointer, nbColumns, edit){}
00351       
00353       virtual QWidget* SFieldGUI(QString name, animal::Vec3 * ptr, QWidget * parent)
00354       {
00355         return new SFVector3GUI(name, ptr, parent);
00356       }
00357       
00358   } ;
00359 //------------------------------------------------------------------------------  
00361   class  MFVector4 : public MField<animal::Vec4> {
00362     public:
00363              
00364       MFVector4(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00365       : MField<animal::Vec4>(name, pointer, nbColumns, edit){}
00366       
00368       virtual QWidget* SFieldGUI(QString name, animal::Vec4 * ptr, QWidget * parent) 
00369       {
00370         return new SFVector4GUI(name, ptr, parent);
00371       }
00372       
00373   } ;
00375 //  /// A MField which represents a std::vector<QString>
00376 //  class  MFString : public MField<QString> {
00377 //    public:
00378 //             
00379 //      MFString(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00380 //      : MField<QString>(name, pointer, nbColumns, edit){}
00381 //      
00382 //      /// @return the corresponding single field's GUI (Graphique User Interface) SFStringGUI*
00383 //      virtual QWidget* SFieldGUI(QString name, QString * ptr, QWidget * parent)
00384 //      {
00385 //        return new SFStringGUI(name, ptr, parent);
00386 //      }
00387 //      
00388 //  } ;
00389 //------------------------------------------------------------------------------  
00390 /*  /// A MField which represents a std::vector<bool>
00391   class  MFBool : public MField<bool> {
00392     public:
00393              
00394       MFBool(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00395       : MField<bool>(name, pointer, nbColumns, edit){}
00396       
00398       virtual QWidget* SFieldGUI(QString name, bool * ptr, QWidget * parent) 
00399       {
00400         return new SFBoolGUI(name, ptr, parent);
00401       }
00402       
00403   } ;*/
00404 //------------------------------------------------------------------------------    
00407   class  X3DSFVec2f : public SField<X3DTK::SFVec2f> {
00408     public:
00409              
00410       X3DSFVec2f(QString name, void * pointer)
00411       : SField<X3DTK::SFVec2f>(name, pointer){}
00412       
00414       virtual QWidget* SFieldGUI(QString name, X3DTK::SFVec2f * ptr, QWidget * parent)
00415       {
00416         return new X3DSFVec2fGUI(name, ptr, parent);
00417       }
00418       
00419   } ;
00420 //------------------------------------------------------------------------------  
00423   class  X3DSFVec3f : public SField<X3DTK::SFVec3f> {
00424     public:
00425              
00426       X3DSFVec3f(QString name, void * pointer)
00427       : SField<X3DTK::SFVec3f>(name, pointer){}
00428       
00430       virtual QWidget* SFieldGUI(QString name, X3DTK::SFVec3f * ptr, QWidget * parent)
00431       {
00432         return new X3DSFVec3fGUI(name, ptr, parent);
00433       }
00434       
00435   } ;
00436 //------------------------------------------------------------------------------  
00439   class  X3DSFRotation : public SField<X3DTK::SFRotation> {
00440     public:
00441              
00442       X3DSFRotation(QString name, void * pointer)
00443       : SField<X3DTK::SFRotation>(name, pointer){}
00444       
00446       virtual QWidget* SFieldGUI(QString name, X3DTK::SFRotation * ptr, QWidget * parent)
00447       {
00448         return new X3DSFRotationGUI(name, ptr, parent);
00449       }
00450       
00451   } ;
00452 //------------------------------------------------------------------------------
00455   class  X3DMFVec2f : public MField<X3DTK::SFVec2f> {
00456     public:
00457              
00458       X3DMFVec2f(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00459       : MField<X3DTK::SFVec2f>(name, pointer, nbColumns, edit){}
00460       
00462       virtual QWidget* SFieldGUI(QString name, X3DTK::SFVec2f * ptr, QWidget * parent)
00463       {
00464         return new X3DSFVec2fGUI(name, ptr, parent);
00465       }
00466       
00467   } ;
00468 //------------------------------------------------------------------------------  
00471   class  X3DMFVec3f : public MField<X3DTK::SFVec3f> {
00472     public:
00473              
00474       X3DMFVec3f(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00475       : MField<X3DTK::SFVec3f>(name, pointer, nbColumns, edit){}
00476       
00478       virtual QWidget* SFieldGUI(QString name, X3DTK::SFVec3f * ptr, QWidget * parent)
00479       {
00480         return new X3DSFVec3fGUI(name, ptr, parent);
00481       }
00482       
00483   } ;
00484 //------------------------------------------------------------------------------  
00487   class  X3DMFRotation : public MField<X3DTK::SFRotation> {
00488     public:
00489              
00490       X3DMFRotation(QString name, void * pointer, unsigned int nbColumns=1, bool edit = false)
00491       : MField<X3DTK::SFRotation>(name, pointer, nbColumns, edit){}
00492       
00494       virtual QWidget* SFieldGUI(QString name, X3DTK::SFRotation * ptr, QWidget * parent)
00495       {
00496         return new X3DSFRotationGUI(name, ptr, parent);
00497       }
00498 
00499   } ;
00500 
00501 } // Qt
00502 } // X3DTK
00503    
00504 #endif // FIELDS_H
00505 
00506 

Generated on Thu Dec 23 13:52:25 2004 by doxygen 1.3.6