![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2012 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: visualEditors.h,v $ $Revision: 1.21 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 #pragma once 00012 00013 #include <vrvUtil/signalslib.h> 00014 #include "entityEditorImpl/entityEditorImplDefines.h" 00015 #include "entityEditorImpl/uiElement.h" 00016 #include <vrvCore/DtVisualizerAttribute.h> 00017 00018 #include <QWidget> 00019 #include <QDialog> 00020 00021 class QComboBox; 00022 class QLabel; 00023 class QPushButton; 00024 class QTreeWidget; 00025 class QFontMetrics; 00026 class QLineEdit; 00027 class QTreeWidgetItem; 00028 class QRadioButton; 00029 class QString; 00030 class DtModelDefinitionSelectionDialog; 00031 class DtDIGuyConfigurationWidget; 00032 class DtRwNLengthStringVector; 00033 00034 namespace makVrv 00035 { 00036 class DtDe; 00037 class DtElementDefinitionNew; 00038 class DtVisualizerDefinition; 00039 class DtVisualizerDefinitionSet; 00040 class DtModelDefinitionComboBox; 00041 class DtDeselectableTreeWidget; 00042 class DtUnicode; 00043 class DtModelDefinitionInstanceEditorWidget; 00044 } 00045 00047 class DT_DLL_entityeditorimpl DtVisualEditor : public QWidget 00048 { 00049 Q_OBJECT 00050 00051 public: 00052 00054 DtVisualEditor(makVrv::DtDe* de, QWidget * parent = 0, Qt::WindowFlags f = 0 ); 00055 00057 virtual ~DtVisualEditor(); 00058 00059 virtual void setup(makVrv::DtElementDefinitionNew*, const makVrv::DtVisualizerDefinition*, const makVrv::DtVisualizerDefinitionSet*, int m); 00060 00061 virtual void setDiGuyData(const DtUiElementEvent&) {}; 00062 00063 signals: 00064 void modified(); 00065 void modelDefinitionModified(); 00066 void uiElementEvent(const DtUiElementEvent&); 00067 void redisplayListIcons(); 00068 00069 protected: 00070 makVrv::DtDe* myDe; 00071 makVrv::DtElementDefinitionNew* myElementDefinition; 00072 const makVrv::DtVisualizerDefinition* myVisualizerDefinition; 00073 const makVrv::DtVisualizerDefinitionSet* myVisualizerDefinitionSet; 00074 int myModelSet; 00075 bool myModified; 00076 }; 00077 00078 typedef DtVisualEditor* (*DtEditorCreatorFcn)(makVrv::DtDe*, QWidget*); 00079 00080 class DT_DLL_entityeditorimpl DtModelDefinitionEditor : public DtVisualEditor 00081 { 00082 Q_OBJECT 00083 00084 public: 00086 DtModelDefinitionEditor(makVrv::DtDe* de, QWidget * parent = 0, Qt::WindowFlags f = 0 ); 00087 00089 virtual ~DtModelDefinitionEditor(); 00090 00091 static DtVisualEditor* create(makVrv::DtDe*, QWidget*); 00092 virtual void setup(makVrv::DtElementDefinitionNew*, const makVrv::DtVisualizerDefinition*, const makVrv::DtVisualizerDefinitionSet*, int m); 00093 virtual void setDiGuyData(const DtUiElementEvent&); 00094 00095 protected slots: 00096 virtual void select3DModelDefinition(); 00097 virtual void setModelValue(const makVrv::DtUnicode&, bool useDiGuy); 00098 virtual void setModelValue(const std::vector<std::string>&, bool useDiGuy); 00099 00100 public: 00101 QLabel* myLabel; 00102 QLabel* myModelDefinition; 00103 QPushButton* mySelect; 00104 DtUiElementEvent myDiGuyData; 00105 }; 00106 00107 class DT_DLL_entityeditorimpl DtSymbolEditorDialog : public QDialog 00108 { 00109 Q_OBJECT 00110 00111 public: 00112 DtSymbolEditorDialog(makVrv::DtDe&, QWidget* parent, bool useMilStd); 00113 00114 virtual ~DtSymbolEditorDialog(); 00115 00116 bool useMilStd() const; 00117 makVrv::DtUnicode milStdFont() const; 00118 00119 virtual void setup(makVrv::DtVisualizerAttributeFontGlyph* myMilStdAttribute, 00120 makVrv::DtVisualAttributeSymbolSelector* myImageSymbolAttribute); 00121 00122 virtual makVrv::DtVisualAttributeSymbolSelector::ImageSymbolMap imageMapValues() const; 00123 00124 protected: 00125 virtual void setupMilStd(); 00126 virtual void setupImageSymbol(); 00127 virtual void addGlyphRange( unsigned int first, 00128 unsigned int last, QFontMetrics &mets, QTreeWidget* widget, QFont font ); 00129 00130 virtual void initializeMilStdValues(); 00131 virtual void initializeImageSymbolValues(); 00132 00133 protected slots: 00134 virtual void visualizerTypeChanged(); 00135 virtual void fontSelectionChanged(); 00136 virtual void fontEditChanged(); 00137 virtual void selectImageDefinition(); 00138 virtual void setImageValueForEditingForce(const std::string&); 00139 00140 signals: 00141 void fontChanged(const makVrv::DtUnicode&); 00142 void imageChanged(const makVrv::DtVisualAttributeSymbolSelector::ImageSymbolMap&); 00143 void modelDefinitionModified(); 00144 00145 protected: 00146 int myEditingForce; 00147 QWidget* myMilStd; 00148 QRadioButton* myUseMilStd; 00149 QTreeWidget* myFonts; 00150 QLabel* myFontLabel; 00151 QLineEdit* myFontEdit; 00152 00153 QWidget* myImageSymbol; 00154 QRadioButton* myUseImage; 00155 QTreeWidget* myImages; 00156 00157 std::map<int, QTreeWidgetItem*> myItemMap; 00158 00159 makVrv::DtDe& myDe; 00160 const makVrv::DtVisualizerAttributeFontGlyph* myMilStdAttribute; 00161 const makVrv::DtVisualAttributeSymbolSelector* myImageSymbolAttribute; 00162 }; 00163 00164 class DT_DLL_entityeditorimpl Dt3DDefinitionSelectionDialog : public QDialog 00165 { 00166 Q_OBJECT 00167 00168 public: 00169 Dt3DDefinitionSelectionDialog(makVrv::DtDe&, QWidget* parent, bool useDiGuy); 00170 00171 virtual ~Dt3DDefinitionSelectionDialog(); 00172 00173 virtual bool useDiGuy() const; 00174 virtual void setup(const makVrv::DtUnicode& modelDef, const DtUiElementEvent& diGuyData); 00175 DtString getCurrentCharacter() const; 00176 DtString getCurrentAnimation() const; 00177 DtString getCurrentAppearance() const; 00178 bool useRandomAppearances() const; 00179 void getRandomAppearances(DtRwNLengthStringVector*) const; 00180 bool randomAppearancesChanged() const; 00181 00182 protected: 00183 virtual void setupDiGuy(); 00184 virtual void setup3DModelDefinition(); 00185 virtual std::string diGuyModelDefinition(const DtString& character, 00186 const DtString& appearance, bool createIfMissing = true); 00187 00188 protected slots: 00189 virtual void visualizerTypeChanged(); 00190 virtual void set3DModel(const std::string&); 00191 virtual void diGuyCharacterChanged(); 00192 00193 signals: 00194 void modelChanged(const makVrv::DtUnicode&, bool); 00195 void modelListChanged(const std::vector<std::string>&, bool); 00196 void modelDefinitionModified(); 00197 void uiElementEvent(const DtUiElementEvent&); 00198 00199 protected: 00200 DtDIGuyConfigurationWidget* myDiGuyWidget; 00201 QRadioButton* myUseDiGuy; 00202 QRadioButton* myUse3DModel; 00203 DtModelDefinitionSelectionDialog* myModelDefinitions; 00204 makVrv::DtDe& myDe; 00205 bool myInitiallyUseDiGuy; 00206 }; 00207 00208 class DT_DLL_entityeditorimpl DtSymbolEditor : public DtVisualEditor 00209 { 00210 Q_OBJECT 00211 00212 public: 00214 DtSymbolEditor(makVrv::DtDe* de, QWidget * parent = 0, Qt::WindowFlags f = 0 ); 00215 00217 virtual ~DtSymbolEditor(); 00218 00219 virtual void setup(makVrv::DtElementDefinitionNew*, const makVrv::DtVisualizerDefinition*, const makVrv::DtVisualizerDefinitionSet*, int m); 00220 00221 static DtVisualEditor* create(makVrv::DtDe*, QWidget*); 00222 00223 protected: 00224 virtual void useMilStd(); 00225 virtual void useImageSymbol(); 00226 00227 virtual void addMilStdDefinition(); 00228 virtual void addImageSymbolDefinition(); 00229 00230 virtual makVrv::DtElementDefinitionNew* findParent(); 00231 virtual void updateVisualizersEnabled(bool useMilStd); 00232 00233 virtual void setEnabled(int, bool); 00234 00235 protected slots: 00236 virtual void editVisualizers(); 00237 00238 virtual void setMilStdValues(const makVrv::DtUnicode&); 00239 virtual void setImageSymbolValues(const makVrv::DtVisualAttributeSymbolSelector::ImageSymbolMap&); 00240 00241 public: 00242 QLabel* myUsing; 00243 QPushButton* myEdit; 00244 00245 protected: 00246 makVrv::DtVisualizerAttributeFontGlyph* myMilStdAttribute; 00247 makVrv::DtVisualAttributeSymbolSelector* myImageSymbolAttribute; 00248 00249 int myMilStdDefinition; 00250 int myImageSymbolDefinition; 00251 00252 bool myUseMilStd; 00253 }; 00254 00255 class DT_DLL_entityeditorimpl DtModelDefinitionSelectionDialog : public QDialog 00256 { 00257 Q_OBJECT 00258 00259 public: 00260 DtModelDefinitionSelectionDialog(makVrv::DtDe* myDe, QWidget* parent, bool is2D = false, bool addButtons = true); 00261 00262 virtual ~DtModelDefinitionSelectionDialog(); 00263 00264 virtual void setDefault(const QString&); 00265 00266 virtual std::string selectedInstance() const; 00267 virtual void selectFilter( const std::string& filter ); 00268 00269 makVrv::DtModelDefinitionInstanceEditorWidget* modelDefinitions() 00270 { 00271 return myModelDefinitions; 00272 } 00273 00274 protected: 00275 virtual void createModelDefinition(const std::string& definitionName, const std::string& schema ); 00276 virtual void setupInstances(); 00277 virtual void setDefinitionFilter( const std::string& filter ); 00278 virtual void definitionSelected(const std::string& s); 00279 00280 signals: 00281 void modelChanged(const std::string&); 00282 void modelDefinitionModified(); 00283 00284 protected: 00285 makVrv::DtModelDefinitionInstanceEditorWidget* myModelDefinitions; 00286 makVrv::DtDe* myDe; 00287 std::string myFilter; 00288 bool myIs2D; 00289 QString myCurValue; 00290 };