VR-Forces 4.0.4 Class Documentation
include/vrfGuiCoreQt/DtVrfScenarioManager.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2009 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: DtVrfScenarioManager.h,v $ $Revision: 1.12 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00013 
00014 #pragma once
00015 
00016 #include <vrfGuiCore/DtVrfGuiApplicationSettings.h>
00017 
00018 #include <vrfGuiCoreQt/vrfGuiCoreQt.h>
00019 #include <vrfGuiCore/DtMenu.h>
00020 #include <vrfGuiCore/entityMapperKey.h>
00021 #include <vrfGuiCore/DtVrfSessionSettingsRecord.h>
00022 #include <vrvCore/DtMenuConfiguration.h>
00023 
00024 #include <vrvUtil/DtVirtualBaseClass.h>
00025 #include <vrvUtil/signalslib.h>
00026 #include <vrvCore/DtDe.h>
00027 
00028 #include <vrfutil/deadReckoningSettings.h>
00029 
00030 #include <boost/signal.hpp>
00031 
00032 #include <QtCore/QVector>
00033 #include <QtCore/QFileInfo>
00034 
00036 #include <QtCore/qnamespace.h>
00037 
00038 class DtScenarioLoadInformation;
00039 class DtScenario;
00040 class DtScenarioExplorer;
00041 class QFileDialog;
00042 class QWidget;
00043 class QDialog;
00044 class DtSimMessage;
00045 class DtIfServerMessage;
00046 
00047 namespace makArchives
00048 {
00049    class DtTerrainOperationRecord;
00050    class DtTerrainRecord;
00051 }
00052 
00053 namespace makVrv
00054 {
00055    class DtRecordSettingsBackupInterface;
00056 }
00057 
00058 namespace makVrf
00059 {
00060    class DtVrfBackendState;
00061    class DtJoinSessionDialog;
00062    class DtHostilityMatrixDialog;
00063    class DtLoadScenarioDialog;
00064    class DtNeverAskAgainMessageBox;
00065    class DtScenarioSettingsDialog;
00066    class DtSessionStatusBox;
00067    class DtSessionStartupDialog;
00068    class DtScenarioDescriptionDialog;
00069 
00071    class DT_DLL_VRFGUICOREQT DtVrfGuiRecentScenarios : public DtVrfGuiApplicationSetting
00072    {
00073    public:
00074       DtVrfGuiRecentScenarios(makVrv::DtDe* = 0);
00075       DtVrfGuiRecentScenarios(const DtVrfGuiRecentScenarios&);
00076 
00077       virtual ~DtVrfGuiRecentScenarios();
00078 
00079       virtual DtVrfGuiApplicationSetting* clone() const;
00080 
00081       const std::vector<std::string> recentScenarios() const
00082       {
00083          return myRecentScenarios;
00084       }
00085 
00086       int maxSize() const
00087       {
00088          return myMaxSize;
00089       }
00090 
00092       void setMaxSize(int);
00093 
00094       void insertScenario(const std::string&, int pos = -1);
00095       int removeScenario(const std::string&);
00096 
00097       virtual std::string classType() const;
00098 
00099    protected:
00100       friend class boost::serialization::access;
00101 
00102       virtual void write(boost::archive::xml_oarchive& out, const unsigned int);
00103       virtual void read(boost::archive::xml_iarchive& in, const unsigned int);
00104 
00105    protected:
00106       std::vector<std::string>   myRecentScenarios;
00107       unsigned int               myMaxSize;
00108    };
00109 
00111    class DT_DLL_VRFGUICOREQT DtVrfScenarioManager : public makVrv::DtVirtualBaseClass
00112    {
00113    public:
00114       friend class DtSessionStatusBox;
00115 
00116       enum DtJoinSessionTerrainAction
00117       {
00118          DtTerrainActionUseSessionTerrain,
00119          DtTerrainActionChooseAlternateTerrain,
00120          DtTerrainActionKeepCurrentTerrain,
00121          DtShowSessionStartupDialog,
00122          DtLoadScenarioSpecifiedInApplication
00123       };
00124 
00125       enum SessionStatusDialogs
00126       {
00127          Loading = 0x00000001,
00128          Saving = 0x00000002,
00129          Closing = 0x00000004,
00130          AllStatusDialogs = Loading | Saving | Closing
00131       };
00132 
00133    public:
00134       DtVrfScenarioManager(makVrv::DtDe&);
00135       virtual ~DtVrfScenarioManager();
00136 
00138       static DtVrfScenarioManager& instance(makVrv::DtDe& de);
00139 
00141       static void init(makVrv::DtDe&);
00142 
00143       const DtScenarioExplorer* scenarioExplorer() const
00144       {
00145          return myExplorer;
00146       }
00147 
00148       const std::vector<DtEntityMapperKey>& controlObjects() const
00149       {
00150          return myControlObjectTypes;
00151       }
00152 
00153       virtual void addControlObject(const DtEntityMapperKey& key);
00154       virtual void removeControlObject(const DtEntityMapperKey& key);
00155       virtual void clearControlObjects();
00156 
00157       virtual bool isControlObject(const DtEntityMapperKey& key) const;
00158 
00159       virtual void closeScenario(bool resetScenario = true);
00160       virtual bool loadScenario(const std::string& s);
00161       virtual bool loadScenario(const DtScenarioLoadInformation& s);
00162       virtual void runScenario();
00163       virtual void pauseScenario();
00164       virtual void rewindScenario();
00165 
00168       virtual void tickedLoadScenario();
00169 
00172       virtual void tickedNewScenario();
00173 
00175       virtual void loadScenarioFromDialog(QWidget* p);
00176       virtual DtLoadScenarioDialog* createLoadScenarioDialog(QWidget*);
00177 
00182       virtual void setHelpFile(const std::string&, bool save = false);
00183       virtual std::string helpFile() const;
00184 
00187       virtual void setDefaultScenarioFile(const std::string& f, bool save = false);
00188       virtual std::string defaultScenarioFile() const;
00189 
00192       virtual void setDefaultSimulationModelSetFile(const std::string& f, bool save = false);
00193       virtual std::string defaultSimulationModelSetFile() const;
00194 
00196       virtual void recreateCreateMenu();
00197 
00199       virtual DtScenarioSettingsDialog* createNewScenarioDialog(QWidget* p);
00200       virtual void newScenarioFromDialog(QWidget* p);
00201 
00204       virtual void newScenario(const std::string&);
00205 
00207       virtual void loadBatchScenario(QWidget*);
00208 
00218       virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
00219       
00220       virtual void resignSession(bool closeTerrain = true);
00221 
00222       virtual bool saveScenarioAs();
00223       virtual bool saveScenario();
00224 
00225       virtual bool canRewind() const;
00226 
00229       void setValidateForVrfObjects(bool b)
00230       {
00231          myValidateForVrfObjects = b;
00232       }
00233 
00234       bool validateForVrfObjects() const
00235       {
00236          return myValidateForVrfObjects;
00237       }
00238 
00239       void setScenarioDirty(bool b)
00240       {
00241          myScenarioDirty = b;
00242       }
00243 
00244       bool scenarioDirty() const
00245       {
00246          return myScenarioDirty;
00247       }
00248 
00249       const DtScenario* scenario() const
00250       {
00251          return myScenario;
00252       }
00253 
00254       void setAskSaveIfScenarioModified(bool b)
00255       {
00256          myAskSaveIfScenarioModified = b;
00257       }
00258 
00259       bool askSaveIfScenarioModified() const
00260       {
00261          return myAskSaveIfScenarioModified;
00262       }
00263 
00264       bool joinedToSession() const
00265       {
00266          return myJoinedToSession;
00267       }
00268 
00269       void setDisplayExistingGdbWarningMessages(bool b)
00270       {
00271          myDisplayExistingGdbWarningMessage = b;
00272       }
00273 
00274       bool displatExistingGdbWarningMessages() const
00275       {
00276          return myDisplayExistingGdbWarningMessage;
00277       }
00278 
00279       virtual void setCorrelated(bool);
00280 
00281       bool correlated() const
00282       {
00283          return myCorrelated;
00284       }
00285 
00286       DtMenu* createMenu()
00287       {
00288          return myMenu;
00289       }
00290 
00291       bool initialized() const
00292       {
00293          return myInitialized;
00294       }
00295 
00296       const DtDeadReckoningSettings& deadReckoningSettings() const
00297       {
00298          return myDeadReckoningSettings;
00299       }
00300 
00301       virtual std::string currentlyLoadedTerrain() const;
00302 
00303       virtual void processJoinSession(bool startupMessage = false);
00304 
00305       virtual void setFromRecord(const DtVrfSessionSettingsRecord& rec);
00306       virtual void loadDefaultSessionSettings(bool loadOnlyFactorySettings = false);
00307       virtual void saveSessionSettingsAsDefaults();
00308       virtual void getRecord(DtVrfSessionSettingsRecord& rec) const;
00309 
00312       virtual bool autoJoinSession() const;
00313       virtual bool askToJoin() const;
00314       virtual bool alwaysJoinWithSessionDatabase() const;
00315       virtual bool alwaysJoinWithOpenDatabase() const;
00316       virtual bool displaySessionDialogs() const;
00317       virtual bool displayCorrelationWarningMessages() const;
00318 
00319       makVrv::DtRecordSettingsBackupInterface*  sessionSettingsBackup()
00320       {
00321          return mySessionSettingsBackup;
00322       }
00323 
00325       void exportSessionSettings(const std::string& fileName);
00326 
00328       void importSessionSettings(const std::string& fileName);
00329 
00331       virtual void setDoNotShowSessionStartupDialog(bool);
00332       bool showSessionStartupDialog() const;
00333 
00335       virtual void setStartupPreference(int);
00336       int startupPreference() const;
00337       
00340       virtual void setAggregateOnCreate(bool);
00341       bool aggregateOnCreate() const;
00342 
00344       virtual void setUserDefinedSmoothing(bool);
00345       bool userDefinedSmoothing() const;
00346 
00348       virtual void setWindowTitle(const QString&);
00349 
00351       virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
00352       SessionStatusDialogs showSessionStatusDialogs() const
00353       {
00354          return myShowSessionStatusDialogs;
00355       }
00356 
00358       virtual void setShowScenarioDescriptionMessageBox(bool b, bool save);
00359       virtual bool showScenarioDescriptionMessageBox() const;
00360 
00362       virtual const makVrv::DtMenuConfiguration& initialCreateMenuConfiguration() const;
00363       virtual makVrv::DtMenuConfiguration initialCreateMenuConfiguration();
00364 
00365    public:
00366       virtual void slot_onScenarioModified();
00367       virtual void slot_allBackendsClosed();
00368 
00370       virtual void editHostilityMatrix(QWidget* parent);
00371 
00373       virtual DtHostilityMatrixDialog* createHostilityMatrixDialog(
00374          QWidget* p, const Qt::WindowFlags& flags) const;
00375 
00377       virtual void addRecentScenario(const std::string&);
00378 
00379    public:
00380       boost::signal<void (const std::string&)> signal_scenarioLoadError;
00381       boost::signal<void (DtSessionStartupDialog*)> signal_sessionStartupBoxCreated;
00382       boost::signal<void (DtHostilityMatrixDialog*)> signal_hostilityMatrixDialogCreated;
00383       boost::signal<void (const DtDeadReckoningSettings&)> signal_deadReckoningSettingsChanged;
00384       boost::signal<void (const DtScenarioExplorer&)> signal_scenarioLoaded;
00385       boost::signal<void (bool)> signal_sessionStatusChanged;
00386       boost::signal<void ()> signal_allBackendsClosed;
00387       boost::signal<void ()> signal_rewinding;
00388 
00390       boost::signal<void ()> signal_scenarioJustLoaded;
00391 
00393       boost::signal<void (const DtScenarioLoadInformation&)> signal_preLoadScenario;
00394 
00397       boost::signal<void (const DtScenarioLoadInformation&)> signal_postLoadScenario;
00398 
00402       boost::signal<void (const std::string&)> signal_preLoadBaseTerrain;
00403 
00406       boost::signal<void (const std::string&)> signal_preLoadTerrain;
00407 
00409       boost::signal<void (const std::string&)> signal_postLoadTerrain;
00410 
00412       boost::signal<void (const DtScenarioExplorer&)> signal_preLoadForceFiles;
00413 
00415       boost::signal<void (const DtScenarioExplorer&)> signal_postLoadForceFiles;
00416 
00418       boost::signal<void (const DtScenarioExplorer&)> signal_preLoadArtilleryManager;
00419 
00421       boost::signal<void (const DtScenarioExplorer&)> signal_postLoadArtilleryManager;
00422 
00424       boost::signal<void (const DtScenarioExplorer&)> signal_preLoadModelSetFiles;
00425 
00427       boost::signal<void (const DtScenarioExplorer&)> signal_postLoadModelSetFiles;
00428 
00430       boost::signal<void (const DtScenarioExplorer&)> signal_preLoadCreateMenu;
00431 
00433       boost::signal<void (const DtScenarioExplorer&, DtMenu*)> signal_postLoadCreateMenu;
00434 
00436       boost::signal<void (const DtScenarioExplorer&)> signal_createMenuLoaded;
00437 
00439       boost::signal<void ()> signal_recreateCreateMenu;
00440 
00442       boost::signal<void (const DtVrfSessionSettingsRecord&)> signal_sessionSettingsChanged;
00443 
00445       boost::signal<void (DtVrfGuiRecentScenarios*)> signal_recentScenariosChanged;
00446 
00448       boost::signal<void (const DtScenario&)> signal_preLoadGuiScenarioSettings;
00449 
00451       boost::signal<void (const DtScenario&)> signal_postLoadGuiScenarioSettings;
00452 
00454      boost::signal<void ()> signal_scenarioClosed;
00455       
00456    protected:
00458       virtual void cleanupSessionBox();
00459 
00461       virtual void slot_sessionStartupComplete();
00462 
00464       virtual void slot_onScenarioLoaded(const DtScenario*);
00465 
00466       virtual void slot_checkBackendClosed(const DtVrfBackendState&, int);
00467       virtual void slot_checkSimulationState(const DtVrfBackendState&, int);
00468 
00470       virtual bool saveIfDirty();
00471       virtual DtJoinSessionDialog* createJoinSessionDialog(QWidget* parent, const Qt::WindowFlags& flags);
00472 
00473       virtual void connectSignals(bool);
00474 
00475       virtual void displayCorrelationWarningMessage();
00476 
00478       virtual void reloadScenario(const std::string& newTerrain);
00479 
00482       virtual void saveScenario(std::string baseName, std::string newTerrainName);
00483 
00485       virtual void slot_onScenarioSaved(std::string scenarioName, std::string newTerrain);
00486 
00488       virtual void slot_onScenarioReloaded(std::string scenarioName);
00489 
00491       virtual void setup();
00492 
00494       virtual void showSessionStartupDialog();
00495 
00497       virtual void sessionStatusBoxClosed();
00498 
00501       virtual void processServerMessage(DtSimMessage*);
00502 
00503    protected:
00504       virtual void loadIndirectFireManager(const DtScenarioExplorer& explorer);
00505       virtual void loadForceFiles(const DtScenarioExplorer& explorer);
00506       virtual void loadCreateMenu(const DtScenarioExplorer& explorer);
00507       virtual void loadInitialCreateMenuConfiguration(const DtFilename&, bool createDefaultConfiguration = true);
00508 
00509       virtual void loadGuiScenarioSettings(const DtScenario&);
00510       virtual void loadModelSetFiles(const DtScenarioExplorer& explorer);
00511       virtual bool loadTerrain(const std::string& filePath);
00512 
00513       virtual DtMenu* createMenuFromFile(const DtString&) const;
00514       virtual bool isModelSet(const DtFilename& filename) const;
00515       virtual bool loadModelSet(const DtFilename& filename, DtMenu* m) const;
00516 
00517       virtual void slot_onSessionUpdated(int flags);
00518       virtual void slot_onDuplicateBackendAddress(const DtVrfBackendState&);
00519 
00520       virtual void slot_backendDiscovered(const DtVrfBackendState&);
00521       virtual void slot_settingReceived(const std::string&, const DtVrfBackendState*);
00522 
00523       virtual bool sessionPrompt(const QString& message);
00524 
00525       virtual bool openTerrainDatabaseFromUserSelection();
00526 
00527       virtual bool loadSessionTerrain(const std::string&);
00528 
00529       virtual bool isSameTerrain(const std::string& terrain1, const std::string& terrain2) const;
00530 
00531       virtual void slot_terrainModified();
00532       virtual void slot_deDestructing();
00533 
00534       virtual void slot_terrainToBeCleared();
00535       virtual void slot_terrainCleared();
00536 
00537       virtual bool checkWriteGdb(const std::string& gdb);
00538 
00539       virtual void setupSessionSettings();
00540 
00542       virtual QFileInfo findTerrainFile(const std::string& terrainFile) const;
00543 
00546       virtual QFileInfo findTerrainFile(const std::string& terrainFile, const std::vector<std::string>& searchPaths,
00547          const std::string& extension) const;
00548 
00550       virtual void slot_scenarioAboutToBeSaved(DtScenario*);
00551 
00553       virtual void createSessionStatusBox(const QString& title, const QString& message, int statusType);
00554 
00555    protected:
00556       makVrv::DtDe&              myDe;
00557       DtScenario*                myScenario;
00558       DtMenu*                    myMenu;
00559       DtScenarioExplorer*        myExplorer;
00560       QDialog*                   mySessionStatusMessageBox;
00561       std::vector<DtEntityMapperKey> myControlObjectTypes;
00562       bool                       myRewinding;
00563       bool                       myValidateForVrfObjects;
00564       bool                       myScenarioDirty;
00565       bool                       myFirstRun;
00566       bool                       myAskSaveIfScenarioModified;
00567       bool                       myAutoJoinSession;
00568       bool                       myJoinedToSession;
00569       bool                       myCorrelationWarned;
00570       std::string                myLoadedTerrain;
00571       bool                       myCorrelated;
00572       bool                       myDisplayExistingGdbWarningMessage;
00573       bool                       myTerrainClearing;
00574       bool                       myLoadingScenario;
00575       int                        myTimeoutInterval;
00576       bool                       myCanSimulate;
00577       bool                       myInitialized;
00578       bool                       myIsStartup;
00579 
00580       DtVrfSessionSettingsRecord            mySessionSettings;
00581       DtDeadReckoningSettings    myDeadReckoningSettings;
00582       makVrv::DtRecordSettingsBackupInterface*  mySessionSettingsBackup;
00583       DtSessionStatusBox* mySessionStatusBox;
00584       SessionStatusDialogs myShowSessionStatusDialogs;
00585       makVrv::DtMenuConfiguration myInitialCreateMenuConfiguration;
00586    };
00587 
00588    REGISTER_APPLICATION_SETTING(DtVrfGuiRecentScenarios)
00589 }
00590 
00591 BOOST_CLASS_VERSION(makVrf::DtVrfGuiRecentScenarios, 1)

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)