![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /***************************************************************************** 00002 * Copyright (c) 2011 MAK Technologies, Inc. 00003 * All rights reserved. 00004 *****************************************************************************/ 00005 /***************************************************************************** 00006 * $RCSfile: DtChannelKeywordGridLines.h,v $ $Revision: 1.11 $ $State: Exp $ 00007 *****************************************************************************/ 00008 00012 00013 #pragma once 00014 00015 #include <vrvCore/vrvCore.h> 00016 00017 #include <makArchives/DtGridLinesSettingsRecord.h> 00018 00019 #include <vrvUtil/DtSignalConnectionManager.h> 00020 00021 #include <vrvCore/DtChannelKeywordObject.h> 00022 00023 #include <string> 00024 00025 namespace makVrv 00026 { 00027 00028 class DtDe; 00029 class DtChannelConfiguration; 00030 class DtWindowConfiguration; 00031 class DtChannelGridLinesAgent; 00032 class DtObserver; 00033 class DtInputDriver; 00034 00037 class DT_DLL_VRVCORE DtChannelKeywordGridLines : public DtChannelKeywordObject 00038 { 00039 public: 00040 00042 friend class DtChannelKeywordGridLinesCreator; 00043 00045 virtual ~DtChannelKeywordGridLines(); 00046 00050 virtual void channelNameChanged( const std::string& displayName, 00051 const std::string& windowName, const std::string& channelName ); 00052 00055 virtual void channelConfigurationChanged( 00056 const DtChannelConfiguration& config ); 00057 00060 virtual void windowConfigurationChanged( 00061 const DtWindowConfiguration& config ) {} 00062 00063 protected: 00064 00065 // Slots for responding to observer-related signals 00066 00069 virtual void slot_observerCreated( DtInputDriver*, DtObserver* observer ); 00070 00073 virtual void slot_observerToBeDestroyed( DtInputDriver*, DtObserver* observer ); 00074 00077 virtual void slot_observerModeChanged( DtObserver* observer, int newMode ); 00078 00082 virtual void slot_observerModeSettingChanged( int mode, int setting ); 00083 00085 virtual void slot_coordinateSystemChanged( const std::string&, const std::string& ); 00086 00088 virtual void slot_autoSpacingSet( bool ); 00089 00091 virtual void slot_fixedSpacingAmountSet( makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits, double ); 00092 00094 virtual void slot_fixedAngularSpacingAmountSet( makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits, double ); 00095 00097 virtual void slot_gridTypeSet( makArchives::DtDisplayUnitsSettingsRecord::CoordSys ); 00098 00100 virtual void slot_unitTypeSet( makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits ); 00101 00103 virtual void slot_angularUnitTypeSet( makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits ); 00104 00106 virtual void slot_minSpacingSet( int ); 00107 00109 virtual void slot_xOffsetSet( makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits, double ); 00110 00112 virtual void slot_yOffsetSet( makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits, double ); 00113 00115 virtual void slot_longitudeOffsetSet( makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits, double ); 00116 00118 virtual void slot_latitudeOffsetSet( makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits, double ); 00119 00121 virtual void slot_decimalPlacesSet( makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits, unsigned ); 00122 00124 virtual void slot_angularDecimalPlacesSet( makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits, unsigned ); 00125 00126 // Helper methods 00127 00128 // Set myObserver to the specified observer and connect to the observerModeChanged 00129 // signal 00130 virtual void connectToObserver( DtObserver* observer ); 00131 00132 // Look up the observer by name, cache the observer name, and call connectToObserver 00133 // with the found observer 00134 virtual void connectToObserver( const std::string& observerName ); 00135 00136 // Disconnect from the current observer's observerModeChanged signal, delete the 00137 // the grid line agent if it exists, and set myObserver and myGridLineAgent 00138 // to Null 00139 virtual void disconnectFromObserver(); 00140 00141 // This function looks up the display grid lines observer setting value and creates 00142 // or destroys a grid line object as needed 00143 virtual void updateGridLinesState(); 00144 00148 virtual bool validateGridType(); 00149 00153 virtual bool validateUnitType(); 00154 00155 protected: 00156 00158 DtChannelKeywordGridLines( DtDe& de, const std::string& keyword, 00159 const std::string& displayName, const std::string& windowName, 00160 const DtChannelConfiguration& channelConfig ); 00161 00162 makArchives::DtDisplayUnitsSettingsRecord::CoordSys defaultForCoordSys( 00163 const std::string& type ); 00164 00165 // Returns true if we are currently using this unit type 00166 bool currentUnits( makArchives::DtDisplayUnitsSettingsRecord::DistanceUnits unit ) const; 00167 bool currentUnits( makArchives::DtDisplayUnitsSettingsRecord::OrientationUnits unit ) const; 00168 00169 protected: 00170 00171 DtChannelGridLinesAgent* myGridLinesAgent; 00172 std::string myObserverName; 00173 DtObserver* myObserver; 00174 std::string myKeyword; 00175 std::string myDisplayName; 00176 std::string myWindowName; 00177 std::string myChannelName; 00178 DtSignalConnectionManager myConnections; 00179 makArchives::DtDisplayUnitsSettingsRecord::CoordSys myGridType; 00180 }; 00181 00184 class DT_DLL_VRVCORE DtChannelKeywordGridLinesCreator 00185 : public DtChannelKeywordObjectCreator 00186 { 00187 public: 00188 00190 DtChannelKeywordGridLinesCreator(); 00191 00193 virtual ~DtChannelKeywordGridLinesCreator(); 00194 00196 virtual DtChannelKeywordObject* createChannelKeywordObject(DtDe& de, 00197 const std::string& displayName, const std::string& windowName, 00198 const DtChannelConfiguration& channelConfig ); 00199 00200 public: 00201 00202 static std::string keyword(); 00203 00204 protected: 00205 00206 std::string myKeyword; 00207 00208 }; 00209 00210 }