![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2012 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 00009 00010 #pragma once 00011 00012 #include <vrvCoreQt/vrvCoreQt.h> 00013 #include <vrvCoreQt/DtElementEditorInterface.h> 00014 #include <vrvCore/DtElementDefinitionManager.h> 00015 #include <vrvCore/DtStateVisualizer.h> 00016 #include <vrvUtil/signalslib.h> 00017 #include <vrvUtil/DtUnicode.h> 00018 00019 #include <QtGui/QWidget> 00020 #include <QtCore/QMap> 00021 #include <boost/bind.hpp> 00022 #include <boost/signals.hpp> 00023 00024 class QComboBox; 00025 class QHBoxLayout; 00026 class QLabel; 00027 class QPushButton; 00028 class QSplitter; 00029 class QTreeWidget; 00030 class QTreeWidgetItem; 00031 class QVBoxLayout; 00032 class QTextEdit; 00033 00034 namespace makVrv 00035 { 00036 class DtElementEditorLogic; 00037 class DtPersistenceControlsInterface; 00038 00041 class DT_DLL_VRVCOREQT DtElementEditorWidget : public QWidget, 00042 public DtElementEditorInterface 00043 { 00044 Q_OBJECT 00045 public: 00046 00048 DtElementEditorWidget( 00049 DtElementDefinitionTypeManager::ElementDefinitionType type, 00050 DtStateVisualizer::Type visType, 00051 DtDe& de, QWidget* parent, 00052 DtPersistenceControlsInterface* persistenceToolbar); 00053 00055 ~DtElementEditorWidget(); 00056 00058 virtual void activate(); 00059 00061 virtual void deactivate(); 00062 00064 00065 virtual void changeElementsStart(); 00066 virtual void addElement(const DtUnicode& name); 00067 virtual void addElement(const DtUnicode& name, const DtUnicode& parentName); 00068 virtual void removeElement(const DtUnicode& name); 00069 virtual void changeElementsStop(); 00070 virtual void clearElements(); 00071 virtual void selectElement(const DtUnicode& name); 00072 00073 virtual void setModelSets(const std::vector<DtUnicode>& modelSets); 00074 virtual void setCurrentModelSet(int index); 00075 00076 virtual void changeDefinitionStart(); 00077 virtual void clearDefinitions(); 00078 virtual void addDefinition(int index, const DtUnicode& name, bool inherited); 00079 virtual void removeDefinition(int index); 00080 virtual void changeDefinitionStop(); 00081 00082 virtual void changeAttributeStart(); 00083 virtual void addAttribute(int defIndex, const std::string& name, 00084 const DtUnicode& value, bool inherited); 00085 virtual void removeAttribute(int defIndex, const std::string& name); 00086 virtual void changeAttributeStop(); 00087 virtual void selectAttribute(int defIndex, const std::string& name); 00088 virtual void updateAttribute(int defIndex, const std::string& name, 00089 const DtUnicode& value); 00090 00091 QTreeWidgetItem* findAttributeItem( int defIndex, const std::string& name); 00092 virtual void setAttributeDescription(const DtUnicode& desc); 00093 virtual void createAttributeEditor(int defIndex, const std::string& name, 00094 const std::string& attrClass); 00095 virtual void destroyAttributeEditor(int defIndex, const std::string& name); 00096 00097 virtual std::string chooseNewVisualizerDefinitionType(); 00098 virtual int chooseNewAttributeName(const std::vector< std::pair< std::string, DtUnicode> >& nameTypePairs); 00099 00101 virtual void setRemoveElementEnabled( bool b ); 00102 00104 virtual void setAddVisualDefEnabled( bool b ); 00105 00107 virtual void setRemoveVisualDefEnabled( bool b ); 00108 00110 virtual void setAddAttributeEnabled( bool b ); 00111 00113 virtual void setRemoveAttributeEnabled( bool b ); 00114 00116 virtual void showAddedElements(std::vector<DtUnicode>& addedNames, 00117 std::vector<DtUnicode>& skippedNames); 00118 00120 00121 protected: 00122 00123 void setupGui(); 00124 00127 QString nameOfSelectedElement() const; 00128 00129 //Utility function. 00130 int indexOfSelectedVisualizer(); 00131 00134 QString nameOfSelectedAttribute() const; 00135 00136 public slots: 00137 00138 void slot_currentElementItemChanged ( QTreeWidgetItem * current, 00139 QTreeWidgetItem * previous ); 00140 00141 void slot_currentVisualizerDefItemChanged ( QTreeWidgetItem * current, 00142 QTreeWidgetItem * previous ); 00143 00144 void slot_addElementDefinition(); 00145 void slot_removeElementDefinition(); 00146 void slot_renameElementDefinition(); 00147 00148 void slot_addVisualizerDef(); 00149 void slot_removeVisualizerDef(); 00150 00151 void slot_addAttribute(); 00152 void slot_removeAttribute(); 00153 void slot_removeOverrideAttribute(); 00154 00155 void slot_modelSetChanged(int index); 00156 void destroyEditors(); 00157 00158 protected: 00159 00160 DtDe& myDe; 00161 DtElementDefinitionTypeManager::ElementDefinitionType myType; 00162 DtStateVisualizer::Type myVisType; 00163 DtElementEditorLogic* myLogic; 00164 QMap<QString,QTreeWidgetItem*> myCacheMap; 00165 00166 QList<QTreeWidgetItem*> myTopItemCache; 00167 QList<QTreeWidgetItem*> myDeleteCache; 00168 QList<QTreeWidgetItem*> myVisualizerDefinitionTreeItemDeleteWidgetCache; 00169 00170 QVBoxLayout* myMainLayout; 00171 QSplitter* mySplitter; 00172 QWidget* myLeftWidgetPane; 00173 QVBoxLayout* myLeftWidgetLayout; 00174 QWidget* myRightWidgetPane; 00175 QVBoxLayout* myRightWidgetLayout; 00176 00177 QLabel* myElementDefinitionLabel; 00178 QTreeWidget* myTreeWidget; 00179 00180 QHBoxLayout* myElementButtonLayout; 00181 QPushButton* myAddElementButton; 00182 QPushButton* myRemoveElementButton; 00183 QPushButton* myRenameElementButton; 00184 00185 QHBoxLayout* myVisualizerDefinitionButtonLayout; 00186 QPushButton* myAddVisualizerDefButton; 00187 QPushButton* myRemoveVisualizerDefButton; 00188 QPushButton* myAddVisualizerAttributeButton; 00189 QPushButton* myRemoveVisualizerAttributeButton; 00190 QPushButton* myRemoveLocalOverrideVisualizerButton; 00191 QLabel* myVisualDefinitionLabel; 00192 00193 QHBoxLayout* myModelSetLayout; 00194 QLabel* myModelSetLabel; 00195 QComboBox* myModelSetComboBox; 00196 QTreeWidget* myVisualizerDefinitionTreeWidget; 00197 QTextEdit* myDescriptionText; 00198 00199 DtPersistenceControlsInterface* myPersistenceToolbar; 00200 }; 00201 }