![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /********************************************************************* 00002 ** Copyright (c) 2008 MaK Technologies, Inc. 00003 ** All rights reserved. 00004 *********************************************************************/ 00005 /********************************************************************* 00006 ** $RCSfile: uiAggregateFormationEditor.h,v $ $Revision: 1.28 $ $State: Exp $ 00007 *********************************************************************/ 00008 00011 00012 #ifndef DTUIAGGREGATEFORMATIONEDITOR_H_ 00013 #define DTUIAGGREGATEFORMATIONEDITOR_H_ 00014 00015 #include "entityEditorImpl/uiElement.h" 00016 #include "entityEditorImpl/entityEditorImplDefines.h" 00017 #include "vrfutil/rwString.h" 00018 #include "symbolMapper/modelKey.h" 00019 #include <vrfExtProtocol/objType.h> 00020 #include "entityEditorImpl/newFormationDialog.h" 00021 #include "entityEditorImpl/formationAutoLayoutFactory.h" 00022 00023 #include <QtCore/QVector> 00024 00025 class QGroupBox; 00026 class DtFormationEditor; 00027 class DtFormationTabBar; 00028 class DtVrfSubObjectParameterList; 00029 class DtVrfSubObjectParameterEntry; 00030 class DtUiAggregateFormationEditor; 00031 class QLabel; 00032 class QCheckBox; 00033 class DtFormationEntry; 00034 class DtFormation; 00035 class QPushButton; 00036 class QToolButton; 00037 class DtReaderWriterFile; 00038 class DtFormationTableEntry; 00039 class DtFormationTable; 00040 class QSpinBox; 00041 00042 class DT_DLL_entityeditorimpl DtUiAggregateFormationSignalHandler : public QObject 00043 { 00044 Q_OBJECT 00045 00046 public: 00047 DtUiAggregateFormationSignalHandler(); 00048 00049 void setUiElement(DtUiAggregateFormationEditor* parent); 00050 00051 protected slots: 00052 virtual void formationChanged(); 00053 virtual void selectionUpdated(const QVector<DtModelKey>&); 00054 virtual void edit(); 00055 virtual void expand(); 00056 virtual void collapse(); 00057 virtual void formationModified(); 00058 virtual void addFormation(); 00059 virtual void removeFormation(); 00060 virtual void renameFormation(); 00061 virtual void setAsDefault(); 00062 virtual void autoLayout(); 00063 virtual void setSubordinateFormation(); 00064 virtual void collapseAllOneLevel(); 00065 virtual void expandAllOneLevel(); 00066 virtual void toggleBoundingBoxes(); 00067 virtual void toggleSnapToGrid(); 00068 virtual void copyFormations(); 00069 virtual void scaleFactorChanged(int); 00070 00071 protected: 00072 DtUiAggregateFormationEditor* myParent; 00073 }; 00074 00075 class DT_DLL_entityeditorimpl DtUiAggregateFormationEditor : public DtUiElement 00076 { 00077 public: 00078 00080 DtUiAggregateFormationEditor 00081 ( 00082 const DtString& name, 00083 DtReaderWriterRegistry* const parentRegistry = NULL 00084 ); 00085 00087 virtual ~DtUiAggregateFormationEditor(); 00088 00090 DtUiAggregateFormationEditor(const DtUiAggregateFormationEditor& orig); 00091 00093 DtUiAggregateFormationEditor& operator=(const DtUiAggregateFormationEditor& orig); 00094 00095 public: 00096 virtual QWidget* createLabelWidget(QWidget* parent) {return 0;}; 00097 virtual QWidget* createControls(QWidget*); 00098 00100 virtual bool isFormationModified(const DtString& formation) const; 00101 virtual void uiState(QMap<QString, QVariant>& state) const; 00102 virtual void setUiState(const QMap<QString, QVariant>&); 00103 00104 DtFormationAutoLayoutFactory* formationAutoLayoutFactory() { return &theFormationAutoLayoutFactory; }; 00105 00106 protected: 00107 virtual DtUiElement* clone(); 00108 virtual void decorateElement(); 00109 virtual void setFromParameters(DtReaderWriter* parentRw); 00110 virtual void elementChanged(); 00111 virtual void setModelModified(DtModelSetEntry* m); 00112 virtual void selectionUpdated(const QVector<DtModelKey>&); 00113 virtual QMap<QString, QVariant> uiState() const; 00114 00115 virtual DtNewFormationDialog* createNewFormationDialog() const; 00116 00118 virtual void processUiEvent(const DtUiElementEvent& e); 00119 virtual void sendEvent(DtUiElementEvent::DtUiElementEventTypes type, const QString& path); 00120 00121 virtual void edit(); 00122 virtual void expand(); 00123 virtual void collapse(); 00124 virtual void collapseAllOneLevel(); 00125 virtual void expandAllOneLevel(); 00126 virtual void toggleBoundingBoxes(); 00127 virtual void toggleSnapToGrid(); 00128 virtual void formationModified(); 00129 virtual void autoLayout(); 00130 virtual void setSubordinateFormation(); 00131 virtual void copyFormations(); 00132 virtual void scaleFactorChanged(int); 00133 00134 virtual DtFormationEditor* createFormationEditor(QWidget*); 00135 00138 virtual void reworkFormationFileName(DtFormationTableEntry* entry); 00139 virtual bool fileInUse(DtFormationTableEntry*) const; 00140 virtual QVector<DtFormationTableEntry*> entriesThatUseFormationFile(const DtFormationTable*, 00141 DtFormationTableEntry*) const; 00142 virtual void formationFileNames(const DtFilename& oldUnsub, const DtFilename& oldFile, 00143 const DtFilename& newFormationFile, QString& newFile, QString& newUnsubName) const; 00144 00146 virtual void removeFromHierarchy(int); 00147 virtual void removeFormationEntry(DtFormation* formation, int iPosition, int maxId); 00148 virtual QVector<DtFormationEntry*> allFormationEntriesForLeader(DtFormation* form, int promId) const; 00149 00150 virtual void setAsDefault(); 00151 00152 virtual void renameFormation(); 00153 virtual void addFormation(); 00154 virtual void removeSelectedFormation(); 00155 00156 virtual void repositionInFormation(int iFrom, int iTo); 00157 virtual void replaceObjectInFormation(int iPos); 00158 00160 virtual void addObjectTypeAtPosition(DtVrfSubObjectParameterEntry* entry, int pos); 00161 00162 virtual void validateExpandCollapse(); 00163 virtual QString addFormationToFormationList(QString entryRwName, const QString& basedOnFormation = ""); 00164 virtual void addNewFormation(QString entryRwName, const QString& basedOnFormation = ""); 00165 00166 protected: 00167 virtual void formationChanged(); 00168 virtual bool isModified() const; 00169 00170 protected: 00171 QGroupBox* myGroupBox; 00172 DtFormationEditor* myFormationEditor; 00173 DtFormationTabBar* myFormations; 00174 DtVrfSubObjectParameterList* mySubordinates; 00175 DtRwString mySubordinateList; 00176 DtUiAggregateFormationSignalHandler myAggregateSignalHandler; 00177 QPushButton* myAddFormation; 00178 QPushButton* myRemoveFormation; 00179 QPushButton* myRenameFormation; 00180 QPushButton* mySetDefaultFormation; 00181 QPushButton* myAutoLayout; 00182 QPushButton* myExpand; 00183 QPushButton* myCollapse; 00184 QPushButton* myCopyFormations; 00185 QCheckBox* myBoundingBoxes; 00186 QCheckBox* mySnapToGrid; 00187 QLabel* myScaleFactorLabel; 00188 QSpinBox* myScaleFactor; 00189 friend class DtUiAggregateFormationSignalHandler; 00190 DtObjectType myObjectType; 00191 static DtFormationAutoLayoutFactory theFormationAutoLayoutFactory; 00192 }; 00193 00194 #endif