![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /****************************************************************************** 00002 ** Copyright (c) 2010 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 ******************************************************************************/ 00005 /****************************************************************************** 00006 ** $RCSfile: DtVrvApplication.h,v $ $Revision: 1.56 $ $State: Exp $ 00007 ******************************************************************************/ 00008 00012 00013 #ifndef DtVrvApplication_H_ 00014 #define DtVrvApplication_H_ 00015 00016 #include <vrvCore/DtVrvApplicationConfiguration.h> 00017 #include <vrvUtil/DtVirtualBaseClass.h> 00018 #include <vrvCore/DtVrvCommandLineProcessor.h> 00019 00020 #include <string> 00021 #include <map> 00022 00023 #include <boost/function.hpp> 00024 00025 namespace makArchives { class DtObserverStateRecordsList; } 00026 00027 namespace makVrv 00028 { 00029 00030 class DtDe; 00031 class DtEventLoop; 00032 class DtPluginManager; 00033 00054 class DT_DLL_VRVCORE DtVrvApplication 00055 { 00056 00057 public: 00058 00061 DtVrvApplication(); 00062 00063 DtVrvApplication(const DtVrvApplicationConfiguration& appConfig); 00064 00066 virtual ~DtVrvApplication(); 00067 00070 static void ShowSplashScreen(const std::string& imageName); 00071 00076 static void ShowErrorMessage(const std::string& message, DtException* ex = 0); 00077 00079 DtVrvApplicationConfiguration& configuration(); 00080 00082 DtPageConfiguration& masterModePageConfiguration(); 00083 DtPageConfiguration& slaveModePageConfiguration(); 00084 00086 DtMenuConfiguration& masterModeMenuConfiguration(); 00087 DtMenuConfiguration& slaveModeMenuConfiguration(); 00088 00090 DtToolbarConfiguration& masterModeToolbarConfiguration(); 00091 DtToolbarConfiguration& slaveModeToolbarConfiguration(); 00092 00094 DtDe& de(); 00095 00100 virtual void initialize(int argc,char** argv); 00101 00106 virtual void run(); 00107 00111 static DtVrvApplication* findFromDe(DtDe&); 00112 00116 static bool parseDisplayEngineParameter(const std::string& argument, 00117 int& port,std::string& address, std::string& displayConfig); 00118 00120 static std::string displayEngineParameterFormatting(); 00121 00123 00125 typedef boost::function<void (DtVrvApplicationConfiguration&, int argc, char** argv)> ConfigurationTransform; 00126 00128 virtual void installCommandLineProcessor(DtVrvCommandLineProcessor* commandLineProcessor); 00129 00132 typedef boost::function<void (DtDeInitializer&, DtDe&, DtVrvApplicationConfiguration&)> ApplicationTransform; 00133 00135 virtual void installPrePluginTransform(const ApplicationTransform& transform, const std::string& id); 00136 00138 virtual void installPostPluginTransform(const ApplicationTransform& transform, const std::string& id); 00139 00141 virtual void installPostAssembleTransform(const ApplicationTransform& transform, const std::string& id); 00142 00144 00146 00148 static void handleFileError( const std::string& filename, const std::string fileType ); 00149 00151 static void bindViews(const std::vector<std::string>& filenames, 00152 makVrv::DtDeInitializer::ObserverStateMap& aMap); 00153 00155 static bool loadObserverStateRecords(const std::string& file, 00156 makArchives::DtObserverStateRecordsList& list); 00157 00159 static void loadViews(const std::vector<std::string>& filenames, 00160 makVrv::DtDeInitializer::ObserverStateMap& aMap); 00161 00163 00166 virtual void writeGuiConfiguration(); 00167 00169 virtual bool updateCurrentGuiConfiguration(); 00170 00171 protected: 00172 00175 virtual void loadPluginModules(); 00176 00178 virtual void assemble(); 00179 00181 virtual void createDefaultDisplayEngineConfiguration(); 00182 00184 virtual DtDisplayConfiguration embeddedMasterDisplayConfig(); 00185 00187 virtual void createDefaultObserverConfiguration(); 00188 00190 virtual void loadSavedGuiState(); 00191 00192 protected: 00193 00194 DtVrvApplicationConfiguration myConfiguration; 00195 DtDeInitializer myInitializer; 00196 DtVrvCommandLineProcessor* myCommandLineProcessor; 00197 DtDe* myDe; 00198 DtPluginManager* myPluginManager; 00199 DtEventLoop* myEventLoop; 00200 00201 typedef std::map<std::string, ApplicationTransform> InitializerTransformMap; 00202 InitializerTransformMap myPrePluginTransforms; 00203 InitializerTransformMap myPostPluginTransforms; 00204 InitializerTransformMap myPostAssembleTransforms; 00205 00206 }; 00207 00208 } 00209 00210 #endif