![]() |
VR-Forces 4.0.4 Class Documentation
|
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 }