VR-Forces 4.0.4 Class Documentation
include/vrvCoreQt/DtVisualizerAttributeEditor.h
Go to the documentation of this file.
00001 /******************************************************************************
00002 ** Copyright (c) 2011 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 ******************************************************************************/
00005 /******************************************************************************
00006 ** $RCSfile:  $ $Revision:  $ $State:  $
00007 ******************************************************************************/
00008 
00012 
00013 #pragma once
00014 #include <vrvCoreQt/vrvCoreQt.h>
00015 #include <vrvCore/DtVisualizerAttribute.h>
00016 #include <vrvCore/DtElementDefinitionManager.h>
00017 #include <QtGui/QWidget>
00018 #include <QtGui/QDialog>
00019 #include <QtCore/QMap>
00020 
00021 class QColorDialog;
00022 class QComboBox;
00023 class QDoubleSpinBox;
00024 class QLineEdit;
00025 class QPushButton;
00026 class QString;
00027 class QStringList;
00028 class QTreeWidget;
00029 class QTreeWidgetItem;
00030 
00031 namespace makVrv
00032 {
00033    class DtDe;
00034    class DtVisualizerDefinition;
00035    class DtModelDefinitionComboBox;
00036 
00038    class DT_DLL_VRVCOREQT  DtVisualizerAttributeMultiValueDialog : public QDialog
00039    {
00040       Q_OBJECT
00041 
00042    public:
00043 
00045       DtVisualizerAttributeMultiValueDialog(DtDe& de, QWidget* w);
00046 
00048       void setupGui();
00049 
00051       void createItemForWidget(QWidget * widget );
00052 
00054       QWidget* findWidgetForItem(QTreeWidgetItem* item) const;
00055 
00057       const QTreeWidget* treeWidget() const;
00058 
00060       boost::signal<void (QTreeWidget*)> signal_addInstance;
00061 
00062    protected slots:
00063 
00064       virtual void addInstance();
00065       virtual void removeInstance();
00066      
00067    protected:
00068       DtDe& myDe;
00069       QTreeWidget* myTreeWidget;
00070       QPushButton* myAddButton;
00071    };
00072 
00076    class DT_DLL_VRVCOREQT DtVisualizerAttributeEditorInterface
00077    {
00078    public:
00079       virtual ~DtVisualizerAttributeEditorInterface();
00080 
00081       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00082          DtVisualizerAttribute* visAttr) = 0;
00083 
00085       boost::signal<void ()> signal_attributeValueChanged;
00086 
00088       boost::signal<void ()> signal_cancel;
00089 
00090       boost::signal<void (DtVisualizerAttributeEditorInterface*)> signal_destroyed;
00091    };
00092 
00093 
00096    class DT_DLL_VRVCOREQT DtVisualizerAttributeEditor : public QWidget,
00097       public DtVisualizerAttributeEditorInterface
00098    {
00099       Q_OBJECT
00100 
00101    public:
00102 
00103       struct TypeInfo
00104       {
00105          TypeInfo()
00106          : editsAttributeName()
00107          , editsAttributeType("")
00108          {            
00109          }
00110 
00111          TypeInfo(const std::string& str, 
00112             const DtVisualizerAttribute::TypeInfo& info)
00113          : editsAttributeName(str)
00114          , editsAttributeType(info)
00115          {            
00116          }
00117 
00118          std::string editsAttributeName;
00119          DtVisualizerAttribute::TypeInfo editsAttributeType;
00120       };
00121 
00123       DtVisualizerAttributeEditor(DtDe& de, QWidget* parent);
00124 
00126       virtual ~DtVisualizerAttributeEditor();
00127 
00129       virtual void setType(
00130          DtElementDefinitionTypeManager::ElementDefinitionType type);
00131 
00132       virtual void setAttribute(          
00133          const DtVisualizerDefinition* visDef, 
00134          DtVisualizerAttribute* visAttr);
00135 
00137       virtual bool commited() const;
00138 
00140       virtual bool canceled() const;
00141 
00142       virtual const TypeInfo& typeInfo() const = 0;
00143 
00144    public slots:
00145 
00146       virtual void commitValue();
00147 
00148       virtual void cancelValue();
00149 
00151       virtual void onPopup();
00152 
00153    protected:
00154 
00156       virtual void addCancelButton();
00157 
00158    protected:
00159       DtDe& myDe;
00160       bool myCommitedFlag;
00161       bool myCancelFlag;
00162       DtElementDefinitionTypeManager::ElementDefinitionType myType;
00163       const DtVisualizerDefinition* myVisualizerDefinition;
00164       DtVisualizerAttribute* myVisualizerAttribute;
00165       QPushButton* myCancel;
00166    };
00167 
00170    class DT_DLL_VRVCOREQT DtVisualizerAttributeEditorCreator
00171    {
00172    public:
00173 
00174       virtual const DtVisualizerAttributeEditor::TypeInfo& 
00175          editorTypeInfo() const = 0;
00176 
00177       virtual DtVisualizerAttributeEditor* create(DtDe& de, QWidget* parent) = 0;
00178    };
00179 
00183    template <typename Editor>   
00184    class DtVisualizerAttributeEditorCreatorTemplate : 
00185       public DtVisualizerAttributeEditorCreator
00186    {
00187    public:
00188 
00189       virtual const DtVisualizerAttributeEditor::TypeInfo&
00190          editorTypeInfo() const
00191       {
00192          return Editor::theTypeInfo();
00193       }
00194 
00195       virtual DtVisualizerAttributeEditor* create(DtDe& de, QWidget* parent)
00196       {
00197          return new Editor(de,parent);
00198       }
00199    };
00200 
00204    class DT_DLL_VRVCOREQT DtVisualizerAttributeComboEditor : 
00205       public DtVisualizerAttributeEditor
00206    {
00207       Q_OBJECT
00208 
00209    public:
00210 
00211       DtVisualizerAttributeComboEditor(DtDe& de, QWidget* parent);
00212 
00213       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00214          DtVisualizerAttribute* visAttr);
00215 
00217       virtual void commitValue();
00218 
00219    protected:
00220 
00223       virtual void setCurrentIndex(int index);
00224 
00226       virtual void getValues(QStringList& values) = 0;
00227 
00229       virtual void commitValue(int currentIndex, const QString& value) = 0;
00230 
00231    protected:
00232       QComboBox* myEdit;
00233    };
00234 
00237    class DT_DLL_VRVCOREQT DtVisualizerAttributeBoolEditor : 
00238       public DtVisualizerAttributeComboEditor
00239    {
00240       Q_OBJECT
00241    public:
00242 
00243       DtVisualizerAttributeBoolEditor(DtDe& de, QWidget* parent);
00244 
00245       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00246          DtVisualizerAttribute* visAttr);
00247 
00249       virtual const TypeInfo& typeInfo() const;
00250 
00252       static const TypeInfo& theTypeInfo();
00253 
00254    protected:
00255       virtual void commitValue(int index,const QString& value);
00256       virtual void getValues(QStringList& values);
00257    };
00258 
00260    typedef DtVisualizerAttributeEditorCreatorTemplate<
00261       DtVisualizerAttributeBoolEditor> DtVisualizerAttributeBoolEditorCreator;
00262 
00265    class DT_DLL_VRVCOREQT DtDefaultVisualizerAttributeEditor : 
00266       public DtVisualizerAttributeEditor
00267    {
00268       Q_OBJECT
00269 
00270    public:
00271 
00272       DtDefaultVisualizerAttributeEditor(DtDe& de, QWidget* parent);
00273 
00274       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00275          DtVisualizerAttribute* visAttr);
00276 
00277       virtual void commitValue();
00278 
00280       virtual const TypeInfo& typeInfo() const;
00281 
00283       static const TypeInfo& theTypeInfo();
00284 
00285    protected:
00286 
00287       QLineEdit* myEdit;
00288    };
00289 
00292    class DT_DLL_VRVCOREQT DtVisualizerAttributeStringEditor : 
00293       public DtVisualizerAttributeEditor
00294    {
00295       Q_OBJECT
00296 
00297    public:
00298 
00299       DtVisualizerAttributeStringEditor(DtDe& de, QWidget* parent);
00300 
00301       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00302          DtVisualizerAttribute* visAttr);
00303 
00304       virtual void commitValue();
00305 
00307       virtual const TypeInfo& typeInfo() const;
00308 
00310       static const TypeInfo& theTypeInfo();
00311 
00312    protected:
00313 
00314       QLineEdit* myEdit;
00315    };
00316 
00318    typedef DtVisualizerAttributeEditorCreatorTemplate<
00319       DtVisualizerAttributeStringEditor> 
00320       DtVisualizerAttributeStringEditorCreator;
00321 
00322 
00325    class DT_DLL_VRVCOREQT DtVisualizerAttributeFloatEditor : 
00326       public DtVisualizerAttributeEditor
00327    {
00328       Q_OBJECT
00329 
00330    public:
00331 
00332       DtVisualizerAttributeFloatEditor(DtDe& de, QWidget* parent);
00333 
00334       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00335          DtVisualizerAttribute* visAttr);
00336 
00338       virtual void commitValue();
00339 
00341       virtual const TypeInfo& typeInfo() const;
00342 
00344       static const TypeInfo& theTypeInfo();
00345 
00346    protected:
00347 
00348       QDoubleSpinBox* myEdit;
00349    };
00350 
00352    typedef DtVisualizerAttributeEditorCreatorTemplate<
00353       DtVisualizerAttributeFloatEditor> DtVisualizerAttributeFloatEditorCreator;
00354 
00357    class DT_DLL_VRVCOREQT DtVisualizerAttributeFilenameEditor: 
00358       public DtVisualizerAttributeEditor
00359    {
00360       Q_OBJECT
00361 
00362    public:
00363 
00365       DtVisualizerAttributeFilenameEditor(DtDe& de, QWidget* parent);
00366 
00368       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00369          DtVisualizerAttribute* visAttr);
00370 
00372       virtual void commitValue();
00373 
00375       virtual const TypeInfo& typeInfo() const;
00376 
00378       static const TypeInfo& theTypeInfo();
00379 
00380    protected:
00381 
00383       virtual void onPopup();
00384 
00385    protected:
00386       QLineEdit* myEdit;
00387       QPushButton* myBrowseButton;
00388    };
00389 
00391    typedef DtVisualizerAttributeEditorCreatorTemplate<
00392       DtVisualizerAttributeFilenameEditor> 
00393       DtVisualizerAttributeFilenameEditorCreator;
00394 
00397    class DT_DLL_VRVCOREQT DtVisualizerAttributeTypeEditor : 
00398       public DtVisualizerAttributeComboEditor
00399    {
00400       Q_OBJECT
00401 
00402    public:
00403 
00404       DtVisualizerAttributeTypeEditor(DtDe& de, QWidget* parent);
00405 
00406       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00407          DtVisualizerAttribute* visAttr);
00408 
00410       virtual const TypeInfo& typeInfo() const;
00411 
00413       static const TypeInfo& theTypeInfo();
00414 
00415    protected:
00416       virtual void commitValue(int index,const QString& value);
00417       virtual void getValues(QStringList& values);
00418 
00419       typedef QMap<QString,std::string> TextNameMap;
00420       TextNameMap myTextToNameMap;
00421    };
00422 
00424    typedef DtVisualizerAttributeEditorCreatorTemplate<
00425       DtVisualizerAttributeTypeEditor> 
00426       DtVisualizerAttributeVisualTypeEditorCreator;
00427 
00428 
00431    class DT_DLL_VRVCOREQT DtVisualizerAttributeModelDefinitionSchemaEditor : 
00432       public DtVisualizerAttributeEditor
00433    {
00434       Q_OBJECT
00435 
00436    public:
00437 
00439       DtVisualizerAttributeModelDefinitionSchemaEditor(DtDe& de, QWidget* parent);
00440 
00442       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00443          DtVisualizerAttribute* visAttr);
00444 
00446       virtual void commitValue();
00447 
00449       virtual const TypeInfo& typeInfo() const;
00450 
00452       static const TypeInfo& theTypeInfo();
00453 
00454    protected:
00455 
00456       void addInstance(QTreeWidget* parent);
00457       void addItem(const QString& name);
00458 
00459    protected:
00460       DtVisualizerAttributeMultiValueDialog* myEditDialog;
00461 
00462    };
00463 
00465    typedef DtVisualizerAttributeEditorCreatorTemplate<
00466       DtVisualizerAttributeModelDefinitionSchemaEditor> 
00467       DtVisualizerAttributeModelDefinitionSchemaEditorCreator;
00468 
00469 
00472    class DT_DLL_VRVCOREQT DtVisualizerAttributeModelDefinitionEditor : 
00473       public DtVisualizerAttributeEditor
00474    {
00475       Q_OBJECT
00476 
00477    public:
00478 
00480       DtVisualizerAttributeModelDefinitionEditor(DtDe& de, QWidget* parent);
00481 
00483       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00484          DtVisualizerAttribute* visAttr);
00485 
00487       virtual void commitValue();
00488 
00490       virtual const TypeInfo& typeInfo() const;
00491 
00493       static const TypeInfo& theTypeInfo();
00494 
00495    protected:
00496 
00497       void addInstance(QTreeWidget* parent);
00498       void addItem(const QString& name);
00499 
00500    protected:
00501       DtVisualizerAttributeMultiValueDialog* myEditDialog;
00502       const DtVisualizerAttributeStringVector* mySchemaAttribute;
00503    };
00504 
00506    typedef DtVisualizerAttributeEditorCreatorTemplate<
00507       DtVisualizerAttributeModelDefinitionEditor> 
00508       DtVisualizerAttributeModelDefinitionEditorCreator;
00509 
00510 
00513    class DT_DLL_VRVCOREQT DtVisualizerAttributeStringVectorEditor : 
00514       public DtVisualizerAttributeEditor
00515    {
00516       Q_OBJECT
00517 
00518    public:
00519 
00521       DtVisualizerAttributeStringVectorEditor(DtDe& de, QWidget* parent);
00522 
00524       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00525          DtVisualizerAttribute* visAttr);
00526 
00528       virtual void commitValue();
00529 
00531       virtual const TypeInfo& typeInfo() const;
00532 
00534       static const TypeInfo& theTypeInfo();
00535 
00536    protected:
00537 
00538       void addInstance(QTreeWidget* parent);
00539       void addItem(const QString& name);
00540 
00541    protected:
00542       DtVisualizerAttributeMultiValueDialog* myEditDialog;
00543    };
00544 
00546    typedef DtVisualizerAttributeEditorCreatorTemplate<
00547       DtVisualizerAttributeStringVectorEditor> 
00548       DtVisualizerAttributeStringVectorEditorCreator;
00549 
00550    class DT_DLL_VRVCOREQT DtVisualizerAttributeFontGlyphEditor : 
00551       public DtVisualizerAttributeEditor
00552    {
00553       Q_OBJECT
00554 
00555    public:
00557       DtVisualizerAttributeFontGlyphEditor(DtDe& de, QWidget* parent);
00558 
00560       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00561          DtVisualizerAttribute* visAttr);
00562 
00564       virtual void commitValue();
00565 
00567       virtual const TypeInfo& typeInfo() const;
00568 
00570       static const TypeInfo& theTypeInfo();
00571 
00572    protected:
00573 
00575       void setupEditorValues();
00576 
00579       void addGlyphRange( unsigned int first, unsigned int last, 
00580          QFontMetrics &mets, QTreeWidget* widget, QFont font );
00581 
00582    protected:
00583 
00585       QTreeWidget* myEditor;
00586    };
00587 
00589    typedef DtVisualizerAttributeEditorCreatorTemplate<
00590       DtVisualizerAttributeFontGlyphEditor> 
00591       DtVisualizerAttributeFontGlyphEditorCreator;
00592 
00593    class DT_DLL_VRVCOREQT DtVisualizerAttributeColorEditor : 
00594       public DtVisualizerAttributeEditor
00595    {
00596       Q_OBJECT
00597 
00598    public:
00600       DtVisualizerAttributeColorEditor(DtDe& de, QWidget* parent);
00601 
00603       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00604          DtVisualizerAttribute* visAttr);
00605 
00607       virtual void commitValue();
00608 
00610       virtual const TypeInfo& typeInfo() const;
00611 
00613       static const TypeInfo& theTypeInfo();
00614 
00615    protected:
00616 
00618       QColorDialog* myEditor;
00619    };
00620 
00621 
00623    typedef DtVisualizerAttributeEditorCreatorTemplate<
00624       DtVisualizerAttributeColorEditor> 
00625       DtVisualizerAttributeColorEditorCreator;
00626 
00629    class DT_DLL_VRVCOREQT DtVisualizerAttributeModelDefinitionSelector: 
00630       public DtVisualizerAttributeEditor
00631    {
00632       Q_OBJECT
00633 
00634    public:
00635 
00637       DtVisualizerAttributeModelDefinitionSelector(DtDe& de, QWidget* parent);
00638 
00640       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00641          DtVisualizerAttribute* visAttr);
00642 
00644       virtual void commitValue();
00645 
00647       virtual const TypeInfo& typeInfo() const;
00648 
00650       static const TypeInfo& theTypeInfo();
00651 
00652    protected:
00653       const DtVisualizerAttributeStringVector* mySchemaAttribute;
00654       DtModelDefinitionComboBox* myEdit;
00655    };
00656 
00658    typedef DtVisualizerAttributeEditorCreatorTemplate<
00659       DtVisualizerAttributeModelDefinitionSelector> 
00660       DtVisualizerAttributeModelDefinitionSelectorCreator;
00661 
00662    class DT_DLL_VRVCOREQT  DtVisualizerAttributeSymbolSelectorDialog : public QDialog
00663    {
00664       Q_OBJECT
00665 
00666    public:
00667 
00669       DtVisualizerAttributeSymbolSelectorDialog(DtDe& de, QWidget* w);
00670 
00672       void setupGui();
00673 
00675       QWidget* findWidgetForItem(QTreeWidgetItem* item) const;
00676       QComboBox* findComboForItem(QTreeWidgetItem* item) const;
00677       int findKeyForItem(QTreeWidgetItem* item) const;
00678 
00680       const QTreeWidget* treeWidget() const;
00681 
00683       boost::signal<void (QTreeWidget*)> signal_addInstance;
00684 
00685       virtual void createItemForWidget(QWidget* widget,int key = -1);
00686 
00687       virtual void setDefaultComboValues(const std::vector<QString>&);
00688 
00689    protected slots:
00690 
00691       virtual void addInstance();
00692       virtual void removeInstance();
00693 
00694    protected:
00695       virtual void addToComboBoxes(int);
00696 
00697    protected:
00698       DtDe& myDe;
00699       QTreeWidget* myTreeWidget;
00700       QPushButton* myAddButton;
00701       QVector<int> myPossibleValues;
00702       std::vector<QString> myDefaultValues;
00703    };
00704 
00707    class DT_DLL_VRVCOREQT DtVisualizerAttributeSymbolSelectorEditor: 
00708       public DtVisualizerAttributeEditor
00709    {
00710       Q_OBJECT
00711 
00712    public:
00713 
00715       DtVisualizerAttributeSymbolSelectorEditor(DtDe& de, QWidget* parent);
00716 
00718       virtual void setAttribute( const DtVisualizerDefinition* visDef, 
00719          DtVisualizerAttribute* visAttr);
00720 
00722       virtual void commitValue();
00723 
00725       virtual const TypeInfo& typeInfo() const;
00726 
00728       static const TypeInfo& theTypeInfo();
00729 
00730       boost::signal<void (DtVisualizerAttributeSymbolSelectorDialog*)> signal_dialogCreated;
00731       boost::signal<void (DtVisualizerAttributeSymbolSelectorDialog*)> signal_dialogAboutToBeDestroyed;
00732 
00733    protected:
00734       virtual void addInstance(QTreeWidget*);
00735       virtual void addItem(int, const QString& def);
00736       virtual DtModelDefinitionComboBox* createBox() const;
00737       virtual std::vector<QString> defaultComboValues() const;
00738 
00739    protected:
00740       DtVisualizerAttributeSymbolSelectorDialog* myEditDialog;
00741       const DtVisualizerAttributeStringVector* mySchemaAttribute;
00742    };
00743 
00745    typedef DtVisualizerAttributeEditorCreatorTemplate<
00746       DtVisualizerAttributeSymbolSelectorEditor> 
00747       DtVisualizerAttributeSymbolSelectorEditorCreator;
00748 
00749 }

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)