35 #include <vlutil/vlPerformanceStats.h>
37 #include <boost/signal.hpp>
39 #include <QtCore/QVector>
40 #include <QtCore/QFileInfo>
41 #include <QtGui/QDialog>
44 #include <QtCore/qnamespace.h>
60 class DtTerrainOperationRecord;
61 class DtTerrainRecord;
66 class DtRecordSettingsBackupInterface;
71 class DtFileCommChannel;
72 class DtVrfScenarioRemapFunction;
73 class DtVrfSimBackendManager;
74 class DtVrfBackendState;
75 class DtJoinSessionDialog;
76 class DtHostilityMatrixDialog;
77 class DtLoadScenarioDialog;
78 class DtNeverAskAgainMessageBox;
79 class DtScenarioSettingsDialog;
80 class DtSessionStatusBox;
81 class DtSessionStartupDialog;
82 class DtScenarioDescriptionDialog;
83 class DtSubMenuConfiguration;
84 class DtVrfModelSetManager;
97 const std::vector<std::string> recentScenarios()
const
99 return myRecentScenarios;
108 void setMaxSize(
int);
110 void insertScenario(
const std::string&,
int pos = -1);
111 int removeScenario(
const std::string&);
113 virtual std::string classType()
const;
116 friend class boost::serialization::access;
118 virtual void write(boost::archive::xml_oarchive& out,
const unsigned int);
119 virtual void read(boost::archive::xml_iarchive& in,
const unsigned int);
142 DtLoadSimulationObjectGroupSpecifiedInApplication
147 Loading = 0x00000001,
149 Closing = 0x00000004,
150 Importing = 0x00000008,
151 CreatingSimulationObjectGroup = 0x00000010,
152 AllStatusDialogs = Loading | Saving | Closing | Importing | CreatingSimulationObjectGroup
170 const std::vector<DtEntityMapperKey>& controlObjects()
const
172 return myControlObjectTypes;
175 bool simulationObjectGroupEditingMode()
const
177 return mySimulationObjectGroupEditingMode;
182 virtual void clearControlObjects();
191 virtual bool wantsToSaveTerrain(
bool& ignoredModifications);
194 virtual bool saveTerrain(
bool askForName =
false);
205 virtual bool regenerateNavigationAreas(
bool);
207 virtual void closeScenario(
bool resetScenario =
true,
const DtFilename& databaseToOpen =
"");
211 virtual void runScenario();
212 virtual void pauseScenario();
216 virtual bool rewindScenario(
double toSimTime = -1);
230 virtual void tickedLoadScenario(
const DtString& scenarioName =
"",
bool useDefaultRemappingFunction =
false);
234 virtual void tickedNewScenario();
237 virtual void loadScenarioFromDialog(
QWidget* p);
239 virtual void importScenarioFromDialog(
QWidget* p);
242 virtual void loadScenarioFromSessionDialog(
QWidget* p);
248 virtual void setHelpFile(
const std::string&,
bool save =
false);
249 virtual std::string helpFile()
const;
253 virtual void setDefaultScenarioFile(
const std::string& f,
bool save =
false);
254 virtual std::string defaultScenarioFile()
const;
257 virtual void setSimulationObjectGroupTerrain(
const std::string& f,
bool save =
false);
258 virtual std::string simulationObjectGroupTerrain()
const;
263 virtual void setDefaultSimulationModelSetFile(
const std::string& f,
bool save =
false);
264 virtual std::string defaultSimulationModelSetFile()
const;
268 virtual void rebuildCreateMenu(
bool recreate =
true);
273 virtual void recreateCreateMenu();
276 virtual std::string language()
const;
286 virtual void removeSimulationObjectGroupTasksSets(
const DtScenarioExplorer& explorer);
290 virtual DtFilename saveScenarioName(
bool askIfDoesNotExist =
true,
bool* asked = 0,
bool createDefaultIfEmpty =
false)
const;
293 virtual void setupWindowTitleBasedOnScenario();
303 virtual void newScenarioFromDialog(
QWidget* p);
309 virtual void newScenario(
const std::string&,
const std::string& sms =
"");
312 virtual void loadBatchScenario(
QWidget*);
323 virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
325 virtual void resignSession(
bool closeTerrain =
true);
327 virtual bool saveScenarioAs();
331 virtual int saveScenario();
333 virtual bool canRewind()
const;
337 void setValidateForVrfObjects(
bool b)
339 myValidateForVrfObjects = b;
342 bool validateForVrfObjects()
const
344 return myValidateForVrfObjects;
347 void setScenarioDirty(
bool b)
352 void setReadyToQuit(
bool b)
357 bool scenarioDirty()
const
359 return myScenarioDirty;
367 void setAskSaveIfScenarioModified(
bool b)
369 myAskSaveIfScenarioModified = b;
372 bool askSaveIfScenarioModified()
const
374 return myAskSaveIfScenarioModified;
377 bool joinedToSession()
const
379 return myJoinedToSession;
382 void setDisplayExistingGdbWarningMessages(
bool b)
384 myDisplayExistingGdbWarningMessage = b;
387 bool displatExistingGdbWarningMessages()
const
389 return myDisplayExistingGdbWarningMessage;
392 virtual void setCorrelated(
bool);
394 bool correlated()
const
404 bool initialized()
const
406 return myInitialized;
411 return myDeadReckoningSettings;
414 void setAllowEditingOnScenarioJoin(
bool b)
416 myAllowEditingOnScenarioJoin = b;
419 bool allowEditingOnScenarioJoint()
const
421 return myAllowEditingOnScenarioJoin;
424 virtual std::string currentlyLoadedTerrain()
const;
426 virtual void processJoinSession(
bool startupMessage =
false);
429 virtual void loadDefaultScriptedTaskSettings(
bool loadOnlyFactorySettings =
false);
430 virtual void saveScriptedTaskSettingsAsDefaults();
435 virtual bool autoJoinSession()
const;
436 virtual bool automaticallyOpenSessionDatabaseWithoutJoiningSession()
const;
437 virtual bool askToJoin()
const;
438 virtual bool alwaysJoinWithSessionDatabase()
const;
439 virtual bool zoomToScenarioExtentsOnLoad()
const;
440 virtual bool alwaysJoinWithOpenDatabase()
const;
441 virtual bool displaySessionDialogs()
const;
442 virtual bool displayCorrelationWarningMessages()
const;
445 virtual bool isDefaultObserverView(
const std::string&);
446 virtual std::string defaultObserverView()
const;
447 virtual void setDefaultObserverView(
const std::string&);
451 virtual void showObserverView(
const std::string& view,
int ticksBeforeShow = 0,
bool inPreTick =
true,
452 bool zoomToExtents =
false);
457 virtual void requestSpotReports();
461 virtual void requestStealthCommands();
464 return myStealthCommands;
470 return mySimulationObjectGroupSaveInformation;
475 virtual bool isScenarioFile(
const DtFilename&,
bool exact =
false)
const;
479 virtual void setAsynchLoadBufferTime(
double);
482 virtual void zoomToExtentsFromScenario(
const DtScenario&)
const;
489 return myScriptedTaskSettingsBackup;
493 void exportSessionSettings(
const std::string& fileName);
496 void importSessionSettings(
const std::string& fileName);
499 void exportScriptedTaskSettings(
const std::string& fileName);
502 void importScriptedTaskSettings(
const std::string& fileName);
505 virtual void setDoNotShowSessionStartupDialog(
bool);
506 bool showSessionStartupDialog()
const;
510 virtual void setAggregateOnCreate(
bool);
511 bool aggregateOnCreate()
const;
514 virtual void setUserDefinedSmoothing(
bool);
515 bool userDefinedSmoothing()
const;
518 virtual void setWindowTitle(
const QString&);
521 virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
524 return myShowSessionStatusDialogs;
528 virtual void setDenySystemScriptEditing(
bool);
529 virtual bool denySystemScriptEditing()
const;
532 virtual void setIndent(
int);
533 virtual int indent()
const;
536 virtual void setWarnOnSystemScriptChange(
bool);
537 virtual bool warnOnSystemScriptChange()
const;
540 virtual void setMonitorScriptedTaskFrameRates(
bool);
541 virtual bool monitorScriptedTaskFrameRates()
const;
544 virtual QString filenameToSaveUnder()
const;
547 virtual void setAutoSave(
bool);
548 virtual bool autoSave()
const;
551 virtual void setShowScenarioDescriptionMessageBox(
bool b);
552 virtual bool showScenarioDescriptionMessageBox()
const;
572 virtual void addAdditionalSmsFile(
const std::string&);
573 virtual void removeAdditionalSmsFile(
const std::string&);
574 virtual void setAdditionalSmsFiles(
const std::vector<DtString>&);
577 virtual std::vector<std::string> defaultSimulationModelSetFiles()
const;
582 virtual void setSaveScenarioFilenameToUseOnFirstSave(
const DtFilename& f);
583 virtual const DtFilename& saveScenarioFilenameToUseOnFirstSave()
const;
588 virtual void slot_onScenarioModified();
591 virtual void editHostilityMatrix(
QWidget* parent);
595 QWidget* p,
const Qt::WindowFlags& flags)
const;
598 virtual void addRecentScenario(
const std::string&);
603 virtual bool askAndSaveScriptsForRewind();
612 virtual bool loadTerrain(
const std::string& filePath);
615 virtual void resetTerrain();
619 virtual time_t dateAndTimeOfDay()
const;
622 virtual double simulationTime()
const;
625 virtual void setShowQuitDialogOnClose(
bool);
626 virtual bool showQuitDialogOnClose()
const;
628 virtual bool usingAsynchIO()
const;
790 virtual void scenarioFilenameChanged();
793 virtual void scenarioJustClosed();
796 virtual void errorLoadingScenario();
799 virtual void scenarioClosing();
802 virtual void slot_allBackendsClosed();
809 virtual void cleanupSessionBox();
812 virtual void slot_sessionStartupComplete();
815 virtual void allScenarioObjectsDiscovered();
818 virtual void slot_onScenarioLoaded(
const DtScenario*,
bool emitScenarioLoadedSignal =
true,
bool isNewScenario =
false);
824 virtual bool saveIfDirty(
int* saved = 0,
bool takeSnapshot =
true,
bool showCheckpointSaveTitle =
false);
827 virtual void connectSignals(
bool);
829 virtual void displayCorrelationWarningMessage();
832 virtual void requestHazardAreaInformation();
835 virtual void reloadScenario(
const std::string& newTerrain);
839 virtual void saveScenario(std::string baseName, std::string newTerrainName);
842 virtual void slot_onScenarioSaved(
bool checkpointSave =
false);
848 virtual void reloadSimulationModelSets(
const std::vector<DtFilename>&,
bool reverse =
false);
851 virtual void slot_onScenarioReloaded(std::string scenarioName);
857 virtual void showSessionStartupDialog();
867 virtual void processHazardAreaInformation(
DtSimMessage*);
873 virtual void restorePreservedScripts();
876 virtual void scenarioWasRewound();
879 virtual void terrainCleared();
882 virtual void completeScenarioLoad();
883 virtual void completeSimulationObjectGroupLoad();
889 virtual void loadOverlayFile(
const DtScenario&,
bool removeAll =
true);
890 virtual void loadSelectionGroupFile(
const DtScenario&);
891 virtual void loadObserverViewFile(
const DtScenario&,
bool andSetDefaultView =
true);
893 virtual void loadGuiScenarioSettings(
const DtScenario&);
897 virtual DtMenu* createMenuFromModelSetManager()
const;
898 virtual bool isModelSet(
const DtFilename& filename)
const;
900 virtual void slot_onSessionUpdated(
int flags);
908 virtual void slot_postDeCallback();
910 virtual bool sessionPrompt(
const QString& message);
912 virtual bool openTerrainDatabaseFromUserSelection();
914 virtual bool loadSessionTerrain(
const std::string&);
916 virtual bool isSameTerrain(
const std::string& terrain1,
const std::string& terrain2)
const;
918 virtual void slot_terrainModified();
921 virtual void slot_propChanged();
923 virtual void slot_deDestructing();
925 virtual void slot_terrainToBeCleared();
926 virtual void slot_terrainCleared();
928 virtual bool checkWriteGdb(
const std::string& gdb);
932 virtual void setupScriptedTaskSettings();
935 virtual QFileInfo findTerrainFile(
const std::string& terrainFile)
const;
939 virtual QFileInfo findTerrainFile(
const std::string& terrainFile,
const std::vector<std::string>& searchPaths,
940 const std::string& extension)
const;
943 virtual void slot_scenarioAboutToBeSaved(
DtScenario*);
946 virtual void createSessionStatusBox(
const QString& title,
const QString& message,
int statusType);
949 virtual void slot_sessionSettingsChanged();
952 virtual bool eventFilter(
QObject*, QEvent*);
954 virtual void slot_savedSimulationObjectGroup(
const std::string&);
956 virtual void postSaveLoadFromSession(
QWidget*);
957 virtual void postSaveLoadFromDialog(
QWidget*);
958 virtual void postSaveNew(
QWidget*);
959 virtual void postSaveQuit();
960 virtual void postSaveLoad();
961 virtual void postSaveClose(
bool resetScenario, DtFilename databaseToOpen);
963 virtual void postSaveRewind(
bool preserveScripts,
double simTime);
965 virtual void nullSaveFunction();
968 virtual void backendDiscoveryTick();
971 virtual void commFileMessagesReceived(
const QStringList&);
972 virtual void statusDialogDestroyed();
1071 Loading = 0x00000001,
1072 Saving = 0x00000002,
1073 Closing = 0x00000004,
1074 Importing = 0x00000008,
1075 CreatingSimulationObjectGroup = 0x00000010
1081 virtual void setMessage(
const QString& message);
1083 virtual void keyPressEvent(QKeyEvent *e);
1085 virtual void terrainGeometryLoaded();
1087 virtual void waitingForTerrainLoad();
1089 virtual void setStatus(Status s);
1096 virtual void accept();
1098 virtual void reject();