35 #include <vlutil/vlPerformanceStats.h>
37 #include <boost/signal.hpp>
39 #include <QtCore/QVector>
40 #include <QtCore/QFileInfo>
41 #include <QtWidgets/QDialog>
44 #include <QtCore/qnamespace.h>
61 class DtTerrainOperationRecord;
62 class DtTerrainRecord;
67 class DtRecordSettingsBackupInterface;
72 class DtFileCommChannel;
73 class DtVrfScenarioRemapFunction;
74 class DtVrfSimBackendManager;
75 class DtVrfBackendState;
76 class DtJoinSessionDialog;
77 class DtHostilityMatrixDialog;
78 class DtLoadScenarioDialog;
79 class DtNeverAskAgainMessageBox;
80 class DtScenarioSettingsDialog;
81 class DtSessionStatusBox;
82 class DtSessionStartupDialog;
83 class DtScenarioDescriptionDialog;
84 class DtSubMenuConfiguration;
85 class DtVrfModelSetManager;
98 const std::vector<std::string> recentScenarios()
const
100 return myRecentScenarios;
109 void setMaxSize(
int);
111 void insertScenario(
const std::string&,
int pos = -1);
112 int removeScenario(
const std::string&);
114 virtual std::string classType()
const;
117 friend class boost::serialization::access;
119 virtual void write(boost::archive::xml_oarchive& out,
const unsigned int);
120 virtual void read(boost::archive::xml_iarchive& in,
const unsigned int);
143 DtLoadSimulationObjectGroupSpecifiedInApplication
148 Loading = 0x00000001,
150 Closing = 0x00000004,
151 Importing = 0x00000008,
152 CreatingSimulationObjectGroup = 0x00000010,
153 AllStatusDialogs = Loading | Saving | Closing | Importing | CreatingSimulationObjectGroup
171 const std::vector<DtEntityMapperKey>& controlObjects()
const
173 return myControlObjectTypes;
176 bool simulationObjectGroupEditingMode()
const
178 return mySimulationObjectGroupEditingMode;
183 virtual void clearControlObjects();
192 virtual bool wantsToSaveTerrain(
bool& ignoredModifications);
195 virtual bool saveTerrain(
bool askForName =
false);
206 virtual bool regenerateNavigationAreas(
bool);
209 virtual DtFilename loadingScenarioFile()
const;
213 virtual bool mapUUIDToNameFromOobInScenario(
const DtFilename& scenarioFile,
214 boost::unordered_map<DtUUID, std::string>& uuidToMarkingTextMap)
const;
216 virtual void closeScenario(
bool resetScenario =
true,
const DtFilename& databaseToOpen =
"");
220 virtual void runScenario();
221 virtual void pauseScenario();
225 virtual bool rewindScenario(
double toSimTime = -1);
239 virtual void tickedLoadScenario(
const DtString& scenarioName =
"",
bool useDefaultRemappingFunction =
false);
243 virtual void tickedNewScenario();
246 virtual void loadScenarioFromDialog(
QWidget* p);
248 virtual void importScenarioFromDialog(
QWidget* p);
251 virtual void loadScenarioFromSessionDialog(
QWidget* p);
257 virtual void setHelpFile(
const std::string&,
bool save =
false);
258 virtual std::string helpFile()
const;
262 virtual void setDefaultScenarioFile(
const std::string& f,
bool save =
false);
263 virtual std::string defaultScenarioFile()
const;
266 virtual void setSimulationObjectGroupTerrain(
const std::string& f,
bool save =
false);
267 virtual std::string simulationObjectGroupTerrain()
const;
272 virtual void setDefaultSimulationModelSetFile(
const std::string& f,
bool save =
false);
273 virtual std::string defaultSimulationModelSetFile()
const;
277 virtual void rebuildCreateMenu(
bool recreate =
true);
280 virtual void reloadVisuals();
283 virtual DtString scenarioSaveExtension(
bool includesDot =
true)
const;
288 virtual void recreateCreateMenu();
291 virtual void cleanupBackupFile(
double simTime)
const;
294 virtual std::string language()
const;
304 virtual void removeSimulationObjectGroupTasksSets(
const DtScenarioExplorer& explorer);
308 virtual DtFilename saveScenarioName(
bool askIfDoesNotExist =
true,
bool* asked = 0,
bool createDefaultIfEmpty =
false,
309 bool useScenarioNameAsSeed =
true)
const;
312 virtual void setupWindowTitleBasedOnScenario();
322 virtual void newScenarioFromDialog(
QWidget* p);
328 virtual void newScenario(
const std::string&,
const std::string& sms =
"");
331 virtual void loadBatchScenario(
QWidget*);
342 virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
344 virtual void resignSession(
bool closeTerrain =
true);
346 virtual bool saveScenarioAs();
350 virtual int saveScenario();
352 virtual bool canRewind()
const;
356 void setValidateForVrfObjects(
bool b)
358 myValidateForVrfObjects = b;
361 bool validateForVrfObjects()
const
363 return myValidateForVrfObjects;
366 void setScenarioDirty(
bool b)
371 void setReadyToQuit(
bool b)
376 bool scenarioDirty()
const
378 return myScenarioDirty;
386 void setAskSaveIfScenarioModified(
bool b)
388 myAskSaveIfScenarioModified = b;
391 bool askSaveIfScenarioModified()
const
393 return myAskSaveIfScenarioModified;
396 bool joinedToSession()
const
398 return myJoinedToSession;
401 void setDisplayExistingGdbWarningMessages(
bool b)
403 myDisplayExistingGdbWarningMessage = b;
406 bool displatExistingGdbWarningMessages()
const
408 return myDisplayExistingGdbWarningMessage;
411 virtual void setCorrelated(
bool);
413 bool correlated()
const
423 bool initialized()
const
425 return myInitialized;
430 return myDeadReckoningSettings;
433 void setAllowEditingOnScenarioJoin(
bool b)
435 myAllowEditingOnScenarioJoin = b;
438 bool allowEditingOnScenarioJoint()
const
440 return myAllowEditingOnScenarioJoin;
443 virtual std::string currentlyLoadedTerrain()
const;
445 virtual void processJoinSession(
bool startupMessage =
false);
448 virtual void loadDefaultScriptedTaskSettings(
bool loadOnlyFactorySettings =
false);
449 virtual void saveScriptedTaskSettingsAsDefaults();
454 virtual void getSplitRecord(std::vector<DtVrfScriptedTaskSettingsRecord>& rec,
455 std::vector<std::string>& fileNames) {};
464 virtual bool autoJoinSession()
const;
465 virtual bool automaticallyOpenSessionDatabaseWithoutJoiningSession()
const;
466 virtual bool askToJoin()
const;
467 virtual bool alwaysJoinWithSessionDatabase()
const;
468 virtual bool zoomToScenarioExtentsOnLoad()
const;
469 virtual bool alwaysJoinWithOpenDatabase()
const;
470 virtual bool displaySessionDialogs()
const;
471 virtual bool displayCorrelationWarningMessages()
const;
474 virtual bool isDefaultObserverView(
const std::string&);
475 virtual std::string defaultObserverView()
const;
476 virtual void setDefaultObserverView(
const std::string&);
480 virtual void showObserverView(
const std::string& view,
int ticksBeforeShow = 0,
bool inPreTick =
true,
481 bool zoomToExtents =
false);
486 virtual void requestSpotReports();
490 virtual void requestStealthCommands();
493 return myStealthCommands;
499 return mySimulationObjectGroupSaveInformation;
504 virtual bool isScenarioFile(
const DtFilename&,
bool exact =
false)
const;
508 virtual void setAsynchLoadBufferTime(
double);
511 virtual void setSaveScenarioToZipFile(
bool);
514 virtual void zoomToExtentsFromScenario(
const DtScenario&)
const;
521 return myScriptedTaskSettingsBackup;
525 void exportSessionSettings(
const std::string& fileName);
528 void importSessionSettings(
const std::string& fileName);
531 void exportScriptedTaskSettings(
const std::string& fileName);
534 void importScriptedTaskSettings(
const std::string& fileName);
537 virtual void setDoNotShowSessionStartupDialog(
bool);
538 bool showSessionStartupDialog()
const;
542 virtual void setAggregateOnCreate(
bool);
543 bool aggregateOnCreate()
const;
546 virtual void setUserDefinedSmoothing(
bool);
547 bool userDefinedSmoothing()
const;
550 virtual void setWindowTitle(
const QString&);
553 virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
556 return myShowSessionStatusDialogs;
560 virtual void setDenySystemScriptEditing(
bool);
561 virtual bool denySystemScriptEditing()
const;
564 virtual void setIndent(
int);
565 virtual int indent()
const;
568 virtual void setWarnOnSystemScriptChange(
bool);
569 virtual bool warnOnSystemScriptChange()
const;
572 virtual void setMonitorScriptedTaskFrameRates(
bool);
573 virtual bool monitorScriptedTaskFrameRates()
const;
576 virtual QString filenameToSaveUnder()
const;
579 virtual void setAutoSave(
bool);
580 virtual bool autoSave()
const;
583 virtual void setShowScenarioDescriptionMessageBox(
bool b);
584 virtual bool showScenarioDescriptionMessageBox()
const;
608 virtual void addAdditionalSmsFile(
const std::string&);
609 virtual void removeAdditionalSmsFile(
const std::string&);
610 virtual void setAdditionalSmsFiles(
const std::vector<DtString>&);
613 virtual std::vector<std::string> defaultSimulationModelSetFiles()
const;
618 virtual void setSaveScenarioFilenameToUseOnFirstSave(
const DtFilename& f);
619 virtual const DtFilename& saveScenarioFilenameToUseOnFirstSave()
const;
624 virtual void slot_onScenarioModified();
627 virtual void editHostilityMatrix(
QWidget* parent);
631 QWidget* p,
const Qt::WindowFlags& flags)
const;
634 virtual void addRecentScenario(
const std::string&);
639 virtual bool askAndSaveScriptsForRewind();
648 virtual bool loadTerrain(
const std::string& filePath);
651 virtual void resetTerrain();
655 virtual time_t dateAndTimeOfDay()
const;
658 virtual double simulationTime()
const;
661 virtual void setShowQuitDialogOnClose(
bool);
662 virtual bool showQuitDialogOnClose()
const;
664 virtual void resetScriptModifiedToolbarConfiguration();
834 virtual time_t initializeEnvironmentDateTimeOfDay(time_t proposedTime);
837 virtual void scenarioFilenameChanged();
840 virtual void scenarioJustClosed();
843 virtual void errorLoadingScenario();
846 virtual void scenarioClosing();
849 virtual void slot_allBackendsClosed();
856 virtual void cleanupSessionBox();
859 virtual void slot_sessionStartupComplete();
862 virtual void allScenarioObjectsDiscovered();
865 virtual void slot_onScenarioLoaded(
const DtScenario*,
bool emitScenarioLoadedSignal =
true,
bool isNewScenario =
false);
871 virtual bool saveIfDirty(
int* saved = 0,
bool takeSnapshot =
true,
bool showCheckpointSaveTitle =
false);
874 virtual void connectSignals(
bool);
876 virtual void displayCorrelationWarningMessage();
879 virtual void requestHazardAreaInformation();
882 virtual void reloadScenario(
const std::string& newTerrain);
886 virtual void saveScenario(std::string baseName, std::string newTerrainName);
889 virtual void slot_onScenarioSaved(
bool checkpointSave =
false);
895 virtual void reloadSimulationModelSets(
const std::vector<DtFilename>&,
bool reverse =
false);
898 virtual void slot_onScenarioReloaded(std::string scenarioName);
904 virtual void showSessionStartupDialog();
914 virtual void processHazardAreaInformation(
DtSimMessage*);
920 virtual void restorePreservedScripts();
926 virtual void terrainCleared();
928 virtual void clearFrontEndScenariodData();
931 virtual void completeScenarioLoad();
932 virtual void completeSimulationObjectGroupLoad();
938 virtual void loadOverlayFile(
const DtScenario&,
bool removeAll =
true);
939 virtual void loadSelectionGroupFile(
const DtScenario&);
940 virtual void loadObserverViewFile(
const DtScenario&,
bool andSetDefaultView =
true);
942 virtual void loadGuiScenarioSettings(
const DtScenario&);
947 virtual DtMenu* createMenuFromModelSetManager()
const;
948 virtual bool isModelSet(
const DtFilename&
filename)
const;
950 virtual void slot_onSessionUpdated(
int flags);
958 virtual void slot_postDeCallback();
961 virtual void remapTerrainFilenames(
DtScenario*);
964 virtual void createTerrainFilenameRemapper();
966 virtual bool sessionPrompt(
const QString& message);
968 virtual bool openTerrainDatabaseFromUserSelection();
970 virtual bool loadSessionTerrain(
const std::string&);
972 virtual bool isSameTerrain(
const std::string& terrain1,
const std::string& terrain2)
const;
974 virtual void slot_terrainModified();
977 virtual void slot_propChanged();
979 virtual void slot_deDestructing();
981 virtual void slot_terrainToBeCleared();
982 virtual void slot_terrainCleared();
984 virtual bool checkWriteGdb(
const std::string& gdb);
988 virtual void setupScriptedTaskSettings();
991 virtual QFileInfo findTerrainFile(
const std::string& terrainFile)
const;
995 virtual QFileInfo findTerrainFile(
const std::string& terrainFile,
const std::vector<std::string>& searchPaths,
996 const std::string& extension)
const;
999 virtual void slot_scenarioAboutToBeSaved(
DtScenario*);
1002 virtual void createSessionStatusBox(
const QString& title,
const QString& message,
int statusType);
1005 virtual void slot_sessionSettingsChanged();
1008 virtual bool eventFilter(
QObject*, QEvent*);
1010 virtual void slot_savedSimulationObjectGroup(
const std::string&);
1012 virtual void postSaveLoadFromSession(
QWidget*);
1013 virtual void postSaveLoadFromDialog(
QWidget*);
1014 virtual void postSaveNew(
QWidget*);
1015 virtual void postSaveQuit();
1016 virtual void postSaveLoad();
1017 virtual void postSaveClose(
bool resetScenario, DtFilename databaseToOpen);
1019 virtual void postSaveRewind(
bool preserveScripts,
double simTime);
1021 virtual void nullSaveFunction();
1024 virtual void backendDiscoveryTick();
1027 virtual void commFileMessagesReceived(
const QStringList&);
1028 virtual void statusDialogDestroyed();
1131 Loading = 0x00000001,
1132 Saving = 0x00000002,
1133 Closing = 0x00000004,
1134 Importing = 0x00000008,
1135 CreatingSimulationObjectGroup = 0x00000010
1141 virtual void setMessage(
const QString& message);
1143 virtual void keyPressEvent(QKeyEvent *e);
1145 virtual void terrainGeometryLoaded();
1147 virtual void waitingForTerrainLoad();
1149 virtual void setStatus(Status s);
1156 virtual void accept();
1158 virtual void reject();