![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00007 00008 00009 #pragma once 00010 00011 #include <vrvUtil/signalslib.h> 00012 #include <vrfGuiCoreQt/vrfGuiCoreQt.h> 00013 #include <vrfGuiCoreQt/autoHideDock.h> 00014 #include <vrfGuiCoreQt/createAndEditObjectDialogInterface.h> 00015 #include <vrfGuiCoreQt/shapeObjectDefinitionWidgetUi.hpp> 00016 #include <vrvCore/DtSharedDisplayUnitsSettings.h> 00017 #include <makArchives/DtDisplayUnitsSettingsRecord.h> 00018 #include <vrvUtil/DtSignalConnectionManager.h> 00019 00020 class DtReferenceEllipsoid; 00021 class QDialog; 00022 00023 namespace makVrf 00024 { 00025 class DtShapeObjectDefinitionDialog; 00026 class DtVrfObjectManipulationHandlerBaseClass; 00027 00031 class DT_DLL_VRFGUICOREQT DtShapeObjectDefinitionDialogLogic 00032 { 00033 00034 public: 00035 00037 DtShapeObjectDefinitionDialogLogic(makVrv::DtDe& de, DtShapeObjectDefinitionDialog* iface); 00038 00040 ~DtShapeObjectDefinitionDialogLogic(); 00041 00043 virtual void createConnections(); 00044 00046 virtual void terminateConnections(); 00047 00049 virtual void processLocationEdited(int currentRow=-1); 00050 00052 virtual void processSelectLocation(int); 00053 00055 virtual void processAddNewPoint(); 00056 00058 virtual void processRemovePoint(int index); 00059 00061 virtual void processObjectCreation(); 00062 00064 virtual void processObjectUpdate(); 00065 00067 virtual void processDoneRequest(); 00068 00070 virtual void processCloseRequest(); 00071 00073 virtual void processCellEdited(int, int); 00074 00076 virtual void processCellEntered(int, int); 00077 00079 virtual void processNamePrefixEdited(); 00080 00082 virtual void processItemSelectionChanged(); 00083 00087 virtual void processPopulateDialog(const makVrv::DtUniqueID& id ); 00088 00089 virtual bool inGeocentric() const; 00090 00092 virtual void setupGui(); 00093 00095 virtual void updateLocations(const std::vector<DtGeodeticCoord>& locs); 00096 00098 virtual void populateDialogWithStmt(const DtCreateObjectCommand* cmd); 00099 00101 virtual void populateOverlays(); 00102 00103 virtual void populateForces(); 00104 virtual void setForce(int); 00105 00107 virtual void processAltitudeTypeChanged(); 00108 00109 virtual void attachToMouseChanged(bool b); 00110 00111 virtual DtGeodeticCoord convertToGeodetic(const DtVector&) const; 00112 virtual DtVector convertToLocal(const DtGeodeticCoord&) const; 00113 00114 virtual void adjustAltitudesBy(double); 00115 virtual void setAltitudesTo(DtAltitudeClampType, double); 00116 00118 virtual void processItemAdded(int); 00119 00122 virtual void showTerrainProfile(); 00123 00124 protected: 00125 00126 virtual void setupLabels(); 00127 00129 virtual void closeDialog(); 00130 00132 virtual void slot_onMouseLocationChanged(const DtVector& loc); 00133 00135 virtual void slot_onMouseAltitudeChanged(double heading); 00136 00138 virtual void slot_onHandlerStopped(DtVrfObjectManipulationHandlerBaseClass* handler); 00139 00141 virtual void slot_onPlacement(const DtVector& loc); 00142 00144 virtual void slot_onLocationAdded(const DtVector& loc); 00145 00147 virtual void slot_onOverlayNameChanged(const std::string& name); 00148 00150 virtual void slot_onForceChanged(int); 00151 00152 virtual void objectCreated(); 00153 00154 virtual void updateButtons(); 00155 00156 virtual void slot_onCoordinateSystemChanged( 00157 makVrv::DtSharedDisplayUnitsSettings::CoordSys); 00158 00159 virtual void slot_onUnitChanged(int attribute, int from); 00160 00161 virtual void restoreLocations(); 00162 virtual void backupLocations(); 00163 00165 virtual void slot_overlayAdded(const std::string&); 00166 00168 virtual void slot_overlayRemoved(const std::string&); 00169 00171 virtual void slot_overlayRenamed(const std::string&, const std::string&); 00172 00173 protected: 00174 00175 makVrv::DtDe& myDe; 00176 DtShapeObjectDefinitionDialog* myInterface; 00177 DtReferenceEllipsoid* myReferenceForConversion; 00178 bool myAltitudeAllowed; 00179 makVrv::DtSharedDisplayUnitsSettings::DistanceUnits myAltitudeUnits; 00180 makVrv::DtSharedDisplayUnitsSettings::CoordSys myCoordSys; 00181 std::vector<DtGeodeticCoord> myBackupLocations; 00182 makVrv::DtSignalConnectionManager myConnectionManager; 00183 }; 00184 00185 00189 class DT_DLL_VRFGUICOREQT DtShapeObjectDefinitionDialog : public DtAutoHideDock, public DtCreateAndEditObjectDialogInterface 00190 { 00191 00192 Q_OBJECT 00193 00194 public: 00195 00197 DtShapeObjectDefinitionDialog(makVrv::DtDe& de, QWidget* parent, const std::string title="", DtDialogInteractionMode mode=DtCreationMode); 00198 00200 virtual ~DtShapeObjectDefinitionDialog(); 00201 00202 virtual void init(const DtEntityType&, const std::string& title, bool forPlan, 00203 DtCreateAndEditObjectDialogInterface::DtDialogInteractionMode, const DtVrfObjectManipulationManager::DtEditingType&); 00204 00206 virtual void closeDialog(); 00207 00209 virtual void setLocationInGridFor(int row, const DtGeodeticCoord&, 00210 makVrv::DtSharedDisplayUnitsSettings::CoordSys = makArchives::DtDisplayUnitsSettingsRecord::End_CoordSys, 00211 makVrv::DtSharedDisplayUnitsSettings::DistanceUnits = makArchives::DtDisplayUnitsSettingsRecord::End_DistanceUnits); 00212 00214 virtual void addLocation(const DtVector& loc, int index = -1); 00215 00217 virtual void removePoint(int); 00218 00220 virtual void insertLocation(int index, const DtVector& loc); 00221 00223 virtual void selectLocation(int index); 00224 00226 virtual DtGeodeticCoord getLocation(int index); 00227 00229 virtual QString getName(); 00230 00232 virtual void hideDialog(); 00233 00235 virtual int selectedPointIndex() const; 00236 00238 virtual int rowCount() const; 00239 00241 virtual void setAltitudeAboveTerrain(bool); 00242 00244 virtual bool altitudeAboveTerrain() const; 00245 00247 virtual void setName(const QString& name); 00248 00250 virtual void setNameVisible(bool flag); 00251 00253 virtual void setTitle(const QString& title); 00254 00256 virtual void setCreateButtonEnabled(bool flag); 00257 00259 virtual void setCreateButtonText(const QString& text); 00260 00262 virtual void setCreateButtonVisible(bool flag); 00263 00265 virtual void setUpdateButtonEnabled(bool flag); 00266 00268 virtual void setUpdateButtonVisible(bool flag); 00269 00271 virtual void setAllowOverlaySelection(bool flag); 00272 00274 virtual void setUpdateButtonText(const QString& text); 00275 00277 virtual void setDoneButtonEnabled(bool flag); 00278 00280 virtual void setDoneButtonVisible(bool flag); 00281 00283 virtual void setUpButtonVisible(bool flag); 00284 00286 virtual void setDownButtonVisible(bool flag); 00287 00289 virtual void setAddPointButtonVisible(bool flag); 00290 00292 virtual void setAddPointButtonEnabled(bool flag); 00293 00295 virtual void setAdjustAltitudeButtonVisible(bool flag); 00296 00298 virtual void setAdjustAltitudeButtonEnabled(bool flag); 00299 00301 virtual void setRemovePointButtonVisible(bool flag); 00302 00304 virtual void setRemovePointButtonEnabled(bool flag); 00305 00307 virtual void setControlButtonsVisible(bool flag); 00308 00310 virtual void setAttachObjectToMouse(bool); 00311 00313 virtual DtDialogInteractionMode interactionMode(); 00314 00316 virtual void populate(const makVrv::DtUniqueID&); 00317 00319 virtual void populate(const DtCreateObjectCommand* cmd); 00320 00322 virtual bool blockSignals(bool); 00323 00325 virtual void addOverlay(const QString& name); 00326 00328 virtual void removeOverlay(const QString& name); 00329 00331 virtual void renameOverlay(const QString& oldName, const QString& newName); 00332 00334 virtual void setOverlay(const QString& name); 00335 00337 virtual void clearOverlays(); 00338 00340 virtual void populateOverlays(); 00341 00343 virtual void populateForces(); 00344 00345 virtual void setAltitudeAboveTerrain(int row, double alt); 00346 00347 bool attachedToMouse() const; 00348 00351 virtual double altitude(int) const; 00352 00354 virtual void setAltitude(int, double, bool blocked = false); 00355 00357 virtual void setAltitudeAllowed(bool); 00358 00360 virtual void setShowForces(bool); 00361 00363 virtual void setReadOnly(bool); 00364 00366 virtual void setReadOnly(int, bool); 00367 00368 virtual void setXLabel(const QString&); 00369 virtual void setYLabel(const QString&); 00370 virtual void setZLabel(const QString&); 00371 virtual void adjustAltitudeAdjustmentDialogLabels(); 00372 00373 virtual void setupForCoordinateSystemAndUnits(makVrv::DtSharedDisplayUnitsSettings::CoordSys, 00374 makVrv::DtSharedDisplayUnitsSettings::DistanceUnits); 00375 00377 virtual void refreshLocs(); 00378 virtual void refreshLocs(const std::vector<DtGeodeticCoord>&); 00379 00380 virtual void clearSelection(); 00381 00383 virtual void clearForces(); 00384 00386 virtual void addForce(const QString& name, int force); 00387 00389 virtual void setForce(int force); 00390 00392 virtual void addExtension(QWidget*); 00393 00395 virtual void removeExtension(QWidget*); 00396 00398 virtual void showPropertiesDialog(bool); 00399 00401 virtual void setTerrainProfileButtonEnabled(bool); 00402 virtual void setTerrainProfileButtonVisible(bool); 00403 00404 protected: 00405 00409 virtual void addLocationIntoList(const DtGeodeticCoord& loc, int pos=-1, 00410 makVrv::DtSharedDisplayUnitsSettings::CoordSys = makArchives::DtDisplayUnitsSettingsRecord::End_CoordSys, 00411 makVrv::DtSharedDisplayUnitsSettings::DistanceUnits = makArchives::DtDisplayUnitsSettingsRecord::End_DistanceUnits); 00412 00414 virtual void setupGui(); 00415 00417 virtual void setupConnections(); 00418 00420 virtual void closeEvent(QCloseEvent *event); 00421 00426 virtual QDialog* createAltitudeAdjustmentDialog(); 00427 00429 virtual DtShapeObjectDefinitionDialogLogic* createLogic(); 00430 00431 public slots: 00432 00434 virtual void slot_onShapeLocationsCellChanged(int, int); 00435 00437 virtual void slot_altitudeTypeChanged(); 00438 00439 protected slots: 00440 virtual void slot_itemSelectionChanged(); 00441 virtual void slot_onCreateButtonClicked(); 00442 virtual void slot_onUpdateButtonClicked(); 00443 virtual void slot_onDoneButtonClicked(); 00444 virtual void slot_onNamePrefixEdited(); 00445 virtual void slot_closePressed(); 00446 virtual void slot_onBtnMoveDownClicked(); 00447 virtual void slot_onBtnMoveUpClicked(); 00448 virtual void slot_onBtnAddPointClicked(); 00449 virtual void slot_onBtnRemovePointClicked(); 00450 virtual void slot_onShapeLocationsCellEntered( int, int); 00451 virtual void slot_onOverlaysComboCurrentIndexChanged(int index); 00452 virtual void slot_onForceComboCurrentIndexChanged(int index); 00453 virtual void slot_attachedToMouseChanged(); 00454 virtual void slot_onAdjustAltitudeClicked(); 00455 virtual void slot_onShowTerrainProfile(); 00456 00457 public: 00458 00459 Ui_ShapeObjectDefinitionWidgetUi myUiImpl; 00460 00461 protected: 00462 00463 DtShapeObjectDefinitionDialogLogic* myLogic; 00464 DtDialogInteractionMode myInteractionMode; 00465 bool myBlockSignals; 00466 bool myAltitudeAllowed; 00467 QDialog* myAltitudeAdjustmentDialog; 00468 QWidget* myParent; 00469 }; 00470 00471 class DT_DLL_VRFGUICOREQT DtShapeObjectDefinitionDialogCreator : public DtVrfObjectModifierDialogCreator 00472 { 00473 public: 00474 virtual DtCreateAndEditObjectDialogInterface* create(makVrv::DtDe& de, QWidget* parent, 00475 DtEntityType entityType, const std::string title="", DtCreationSignalType signalCreate = DtNoCreationSignal, 00476 DtCreateAndEditObjectDialogInterface::DtDialogInteractionMode mode=DtCreateAndEditObjectDialogInterface::DtCreationMode, 00477 const DtVrfObjectManipulationManager::DtEditingType& editType=DtVrfObjectManipulationManager::Context); 00478 }; 00479 }