![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2007 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: uiLayoutElement.h,v $ $Revision: 1.10 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DTUILAYOUTELEMENT_H_ 00013 #define DTUILAYOUTELEMENT_H_ 00014 00015 #include "entityEditorImpl/uiElement.h" 00016 #include "vrfutil/rwList.h" 00017 #include "vrfutil/rwBoolean.h" 00018 00019 #include <QtCore/QPoint> 00020 00021 class QLayout; 00022 00023 static const char* DtUiLayoutElementType = "DtUiLayoutElement"; 00024 00025 #include "entityEditorImpl/entityEditorImplDefines.h" 00026 00027 class DT_DLL_entityeditorimpl DtLayoutElement : public DtUiElement 00028 { 00029 public: 00031 DtLayoutElement 00032 ( 00033 const DtString& name, 00034 DtReaderWriterRegistry* const parentRegistry = NULL 00035 ); 00036 00038 virtual ~DtLayoutElement(); 00039 00041 DtLayoutElement(const DtLayoutElement& orig); 00042 00044 DtLayoutElement& operator=(const DtLayoutElement& orig); 00045 00046 virtual void addSpacing(); 00047 00048 virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath, 00049 const DtVariableBindingsList& variableBindings); 00050 00051 void setTitle(const DtString& s) { myTitle = s; }; 00052 const DtString& title() const { return myTitle; }; 00053 00054 virtual QWidget* createLabelWidget(QWidget* parent) {return 0;} 00055 00059 virtual void addWidget(DtUiElement*, QWidget* label, QWidget* control, QWidget* parent) = 0; 00060 00064 virtual QWidget* joinLabelAndControl(QWidget* label, QWidget* control, QWidget* parent); 00065 00066 protected: 00067 DtString myTitle; 00068 QLayout* myLayout; 00069 QWidget* myBox; 00070 }; 00071 00072 class DT_DLL_entityeditorimpl DtGridLayoutElement : public DtLayoutElement 00073 { 00074 public: 00076 DtGridLayoutElement 00077 ( 00078 const DtString& name, 00079 DtReaderWriterRegistry* const parentRegistry = NULL 00080 ); 00081 00083 virtual ~DtGridLayoutElement(); 00084 00086 DtGridLayoutElement(const DtGridLayoutElement& orig); 00087 00089 DtGridLayoutElement& operator=(const DtGridLayoutElement& orig); 00090 00091 public: 00092 virtual QWidget* createControls(QWidget*); 00093 virtual void addWidget(DtUiElement*, QWidget* label, QWidget* control, QWidget* parent); 00094 virtual void addSpacing(); 00095 00096 protected: 00097 virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath, 00098 const DtVariableBindingsList& variableBindings); 00099 00100 virtual DtUiElement* clone(); 00101 00102 protected: 00103 int myNumColumns; 00104 QPoint myGridPosition; 00105 }; 00106 00107 class DT_DLL_entityeditorimpl DtHorizontalLayoutElement : public DtLayoutElement 00108 { 00109 public: 00111 DtHorizontalLayoutElement 00112 ( 00113 const DtString& name, 00114 DtReaderWriterRegistry* const parentRegistry = NULL 00115 ); 00116 00118 virtual ~DtHorizontalLayoutElement(); 00119 00121 DtHorizontalLayoutElement(const DtHorizontalLayoutElement& orig); 00122 00124 DtHorizontalLayoutElement& operator=(const DtHorizontalLayoutElement& orig); 00125 00126 virtual void addSpacing(); 00127 00128 protected: 00129 virtual QWidget* createControls(QWidget*); 00130 virtual void addWidget(DtUiElement*, QWidget* label, QWidget* control, QWidget* parent); 00131 00132 protected: 00133 virtual DtUiElement* clone(); 00134 }; 00135 00136 class DT_DLL_entityeditorimpl DtVerticalLayoutElement : public DtLayoutElement 00137 { 00138 public: 00140 DtVerticalLayoutElement 00141 ( 00142 const DtString& name, 00143 DtReaderWriterRegistry* const parentRegistry = NULL 00144 ); 00145 00147 virtual ~DtVerticalLayoutElement(); 00148 00150 DtVerticalLayoutElement(const DtVerticalLayoutElement& orig); 00151 00153 DtVerticalLayoutElement& operator=(const DtVerticalLayoutElement& orig); 00154 00155 virtual void addSpacing(); 00156 00157 protected: 00158 virtual QWidget* createControls(QWidget*); 00159 virtual void addWidget(DtUiElement*, QWidget* label, QWidget* control, QWidget* parent); 00160 00161 protected: 00162 virtual DtUiElement* clone(); 00163 }; 00164 00165 class DT_DLL_entityeditorimpl DtUiLayoutSignalHandler : public QObject 00166 { 00167 Q_OBJECT 00168 00169 public: 00170 DtUiLayoutSignalHandler() {}; 00171 00172 signals: 00173 void uiEvent(const DtUiElementEvent&); 00174 00175 protected slots: 00176 virtual void sendEvent(const DtUiElementEvent& e) { emit uiEvent(e); }; 00177 }; 00178 00179 class DT_DLL_entityeditorimpl DtLayoutContainer : public DtRwList 00180 { 00181 public: 00182 00184 DtLayoutContainer(); 00185 00186 DtLayoutContainer(const DtString& name, DtReaderWriterRegistry* 00187 parentRegistry = NULL); 00188 00190 virtual ~DtLayoutContainer(); 00191 00193 DtLayoutContainer(const DtLayoutContainer& orig, 00194 DtReaderWriterRegistry* parentRegistry = NULL); 00195 00197 DtLayoutContainer& operator=(const DtLayoutContainer& orig); 00198 00199 virtual QWidget* createControls(QWidget* parent); 00200 00201 const DtString& objectName() const { return myObjectName; }; 00202 virtual void setFromParameters(DtReaderWriter* parentRw); 00203 virtual void addElementChangedCallback(DtElementChangedCallbackFcn f, void* u); 00204 virtual void removeElementChangedCallback(DtElementChangedCallbackFcn f, void* u); 00205 virtual bool isModified() const; 00206 virtual void objectParametersModified(); 00207 virtual void processUiEvent(const DtUiElementEvent&); 00208 static void subelementChangedCallback(DtUiElement* element, void* usr); 00209 00211 virtual void removeAllCallbacks(); 00212 virtual void setModelModified(DtModelSetEntry* m); 00213 virtual void uiState(QMap<QString, QVariant>& state) const; 00214 virtual void setUiState(const QMap<QString, QVariant>&); 00215 00216 DtUiLayoutSignalHandler* signalHandler() { return &mySignalHandler; }; 00217 00218 protected: 00221 virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath, 00222 const DtVariableBindingsList& variableBindings); 00223 virtual void emptyList(); 00224 virtual void copyList(const DtLayoutContainer& orig); 00225 00226 virtual void processSubelementChanged(DtUiElement* element); 00227 00228 protected: 00229 DtRwString myReaderWriterName; 00230 DtRwString myTitle; 00231 DtRwString myObjectName; 00232 DtRwBoolean myAddSpacing; 00233 QWidget* myBox; 00234 DtLayoutElement* myLayout; 00235 DtCallbackList<DtUiElement*> myElementChangedCallbackList; 00236 DtUiLayoutSignalHandler mySignalHandler; 00237 }; 00238 00239 class DT_DLL_entityeditorimpl DtUiLayoutElement : public DtUiElement 00240 { 00241 public: 00242 00244 DtUiLayoutElement 00245 ( 00246 const DtString& name, 00247 DtReaderWriterRegistry* const parentRegistry = NULL 00248 ); 00249 00251 virtual ~DtUiLayoutElement(); 00252 00254 DtUiLayoutElement(const DtUiLayoutElement& orig); 00255 00257 DtUiLayoutElement& operator=(const DtUiLayoutElement& orig); 00258 00259 public: 00260 virtual DtUiElement* clone(); 00261 virtual void merge(DtUiElement*); 00262 virtual const DtString& objectName() const; 00263 00264 virtual QWidget* createLabelWidget(QWidget* parent) {return 0;} 00265 00267 virtual void removeAllCallbacks(); 00268 virtual void uiState(QMap<QString, QVariant>& state) const; 00269 virtual void setUiState(const QMap<QString, QVariant>&); 00270 00271 protected: 00272 virtual const char* readerWriterType() const; 00273 virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath, 00274 const DtVariableBindingsList& variableBindings); 00275 00276 virtual QWidget* createControls(QWidget* parent); 00277 virtual void mergeInto(DtUiForParameter*); 00278 virtual DtUiElement* elementNamed(const DtString& s); 00279 virtual bool mergeInto(const DtString& readerWriterName, bool after, DtUiElement* element); 00280 virtual void setFromParameters(DtReaderWriter* parentRw); 00281 virtual void addElementChangedCallback(DtElementChangedCallbackFcn f, void* u); 00282 virtual void removeElementChangedCallback(DtElementChangedCallbackFcn f, void* u); 00283 virtual bool isModified() const; 00284 virtual void objectParametersModified() {myLayoutContainer.objectParametersModified();}; 00285 virtual void processUiEvent(const DtUiElementEvent& e) { myLayoutContainer.processUiEvent(e); }; 00286 virtual void setModelModified(DtModelSetEntry* m); 00287 00288 protected: 00289 DtLayoutContainer myLayoutContainer; 00290 }; 00291 00292 class DT_DLL_entityeditorimpl DtUiAddToLayoutElement : public DtUiLayoutElement 00293 { 00294 public: 00295 00297 DtUiAddToLayoutElement 00298 ( 00299 const DtString& name, 00300 DtReaderWriterRegistry* const parentRegistry = NULL 00301 ); 00302 00304 virtual ~DtUiAddToLayoutElement(); 00305 00307 DtUiAddToLayoutElement(const DtUiAddToLayoutElement& orig); 00308 00310 DtUiAddToLayoutElement& operator=(const DtUiAddToLayoutElement& orig); 00311 00312 protected: 00313 virtual DtUiElement* clone(); 00314 virtual void mergeInto(DtUiForParameter*); 00315 }; 00316 00317 class DT_DLL_entityeditorimpl DtUiAddItemElement : public DtUiLayoutElement 00318 { 00319 public: 00320 00322 DtUiAddItemElement 00323 ( 00324 const DtString& name, 00325 DtReaderWriterRegistry* const parentRegistry = NULL 00326 ); 00327 00329 virtual ~DtUiAddItemElement(); 00330 00332 DtUiAddItemElement(const DtUiAddItemElement& orig); 00333 00335 DtUiAddItemElement& operator=(const DtUiAddItemElement& orig); 00336 00337 protected: 00338 virtual DtUiElement* clone(); 00339 virtual void mergeInto(DtUiForParameter*); 00340 virtual DtlObjPtr getData(DtlObjPtr args, const DtFilename& searchPath, 00341 const DtVariableBindingsList& variableBindings); 00342 00343 protected: 00344 DtRwString myNear; 00345 DtRwString myPlacement; 00346 }; 00347 00348 #endif