37 #include <vlutil/vlPerformanceStats.h>
39 #include <boost/signal.hpp>
41 #include <QtCore/QVector>
42 #include <QtCore/QFileInfo>
43 #include <QtWidgets/QDialog>
46 #include <QtCore/qnamespace.h>
63 class DtTerrainOperationRecord;
64 class DtTerrainRecord;
69 class DtRecordSettingsBackupInterface;
72 #define DtFavoritesTopLevelIconRank 99999
73 #define DtRecentTopLevelIconRank 99998
77 class DtFileCommChannel;
78 class DtVrfScenarioRemapFunction;
79 class DtVrfSimBackendManager;
80 class DtVrfBackendState;
81 class DtJoinSessionDialog;
82 class DtHostilityMatrixDialog;
83 class DtLoadScenarioDialog;
84 class DtNeverAskAgainMessageBox;
85 class DtScenarioSettingsDialog;
86 class DtSessionStatusBox;
87 class DtSessionStartupDialog;
88 class DtScenarioDescriptionDialog;
89 class DtSubMenuConfiguration;
90 class DtVrfModelSetManager;
103 const std::vector<std::string> recentScenarios()
const
105 return myRecentScenarios;
114 void setMaxSize(
int);
116 void insertScenario(
const std::string&,
int pos = -1);
117 int removeScenario(
const std::string&);
119 virtual std::string classType()
const;
122 friend class boost::serialization::access;
124 virtual void write(boost::archive::xml_oarchive& out,
const unsigned int);
125 virtual void read(boost::archive::xml_iarchive& in,
const unsigned int);
148 DtLoadSimulationObjectGroupSpecifiedInApplication
153 Loading = 0x00000001,
155 Closing = 0x00000004,
156 Importing = 0x00000008,
157 CreatingSimulationObjectGroup = 0x00000010,
158 AllStatusDialogs = Loading | Saving | Closing | Importing | CreatingSimulationObjectGroup
176 const std::vector<DtEntityMapperKey>& controlObjects()
const
178 return myControlObjectTypes;
181 bool loadingSessionTerrain()
const
183 return myLoadingSessionTerrain;
186 bool simulationObjectGroupEditingMode()
const
188 return mySimulationObjectGroupEditingMode;
193 virtual void clearControlObjects();
202 virtual bool wantsToSaveTerrain(
bool& ignoredModifications);
205 virtual bool saveGuiTerrain(
bool askForName =
false);
208 virtual bool saveSimTerrain(
bool askForName =
false);
219 virtual bool regenerateNavigationAreas(
bool);
222 virtual DtFilename loadingScenarioFile()
const;
226 virtual bool mapUUIDToScenarioDataFromOobInScenario(
const DtFilename& scenarioFile,
231 virtual void closeScenario(
bool resetScenario =
true,
const DtFilename& databaseToOpen =
"",
bool forceCloseAll =
false);
235 virtual void runScenario();
236 virtual void pauseScenario();
240 virtual bool rewindScenario(
double toSimTime = -1);
254 virtual void tickedLoadScenario(
const DtString& scenarioName =
"",
bool useDefaultRemappingFunction =
false);
258 virtual void tickedNewScenario();
261 virtual void loadScenarioFromDialog(QWidget* p);
263 virtual void importScenarioFromDialog(QWidget* p);
266 virtual void loadScenarioFromSessionDialog(QWidget* p);
272 virtual void setHelpFile(
const std::string&,
bool save =
false);
273 virtual std::string helpFile()
const;
277 virtual void setDefaultScenarioFile(
const std::string& f,
bool save =
false);
278 virtual std::string defaultScenarioFile()
const;
281 virtual void setSimulationObjectGroupTerrain(
const std::string& f,
bool save =
false);
282 virtual std::string simulationObjectGroupTerrain()
const;
287 virtual void setDefaultSimulationModelSetFile(
const std::string& f,
bool save =
false);
288 virtual std::string defaultSimulationModelSetFile()
const;
292 virtual void rebuildCreateMenu(
bool recreate =
true);
295 virtual void reloadVisuals();
298 virtual DtString scenarioSaveExtension(
bool includesDot =
true)
const;
303 virtual void recreateCreateMenu();
306 virtual void cleanupBackupFile(
double simTime)
const;
309 virtual std::string language()
const;
319 virtual void removeSimulationObjectGroupTasksSets(
const DtScenarioExplorer& explorer);
323 virtual DtFilename saveScenarioName(
bool askIfDoesNotExist =
true,
bool* asked = 0,
bool createDefaultIfEmpty =
false,
324 bool useScenarioNameAsSeed =
true)
const;
329 return mySimulationObjectsCategoryInformation;
334 return mySimulationObjectsCategoryInformation;
338 virtual void setupWindowTitleBasedOnScenario();
348 virtual void newScenarioFromDialog(QWidget* p);
354 virtual void newScenario(
const std::string&,
const std::string& sms =
"");
357 virtual void loadBatchScenario(QWidget*);
368 virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
370 virtual void resignSession(
bool closeTerrain =
true);
372 virtual bool saveScenarioAs();
376 virtual int saveScenario();
378 virtual bool canRewind()
const;
382 void setValidateForVrfObjects(
bool b)
384 myValidateForVrfObjects = b;
387 bool validateForVrfObjects()
const
389 return myValidateForVrfObjects;
392 virtual void setScenarioDirty(
bool b);
394 void setReadyToQuit(
bool b)
399 bool scenarioDirty()
const
401 return myScenarioDirty;
409 void setAskSaveIfScenarioModified(
bool b)
411 myAskSaveIfScenarioModified = b;
414 bool askSaveIfScenarioModified()
const
416 return myAskSaveIfScenarioModified;
419 bool joinedToSession()
const
421 return myJoinedToSession;
424 void setDisplayExistingGdbWarningMessages(
bool b)
426 myDisplayExistingGdbWarningMessage = b;
429 bool displatExistingGdbWarningMessages()
const
431 return myDisplayExistingGdbWarningMessage;
434 virtual void setCorrelated(
bool);
436 bool correlated()
const
446 bool initialized()
const
448 return myInitialized;
453 return myDeadReckoningSettings;
456 void setAllowEditingOnScenarioJoin(
bool b)
458 myAllowEditingOnScenarioJoin = b;
461 bool allowEditingOnScenarioJoint()
const
463 return myAllowEditingOnScenarioJoin;
466 virtual std::string currentlyLoadedTerrain()
const;
468 virtual void processJoinSession(
bool startupMessage =
false);
471 virtual void loadDefaultScriptedTaskSettings(
bool loadOnlyFactorySettings =
false);
472 virtual void saveScriptedTaskSettingsAsDefaults();
477 virtual void getSplitRecord(std::vector<DtVrfScriptedTaskSettingsRecord>& rec,
478 std::vector<std::string>& fileNames) {};
487 virtual bool autoJoinSession()
const;
488 virtual bool automaticallyOpenSessionDatabaseWithoutJoiningSession()
const;
489 virtual bool askToJoin()
const;
490 virtual bool alwaysJoinWithSessionDatabase()
const;
491 virtual bool zoomToScenarioExtentsOnLoad()
const;
492 virtual bool alwaysJoinWithOpenDatabase()
const;
493 virtual bool displaySessionDialogs()
const;
494 virtual bool displayCorrelationWarningMessages()
const;
495 virtual void displayCorrelationWarningMessage();
499 virtual bool isDefaultObserverView(
const std::string&);
500 virtual std::string defaultObserverView(
bool& is2D)
const;
501 virtual void setDefaultObserverView(
const std::string&);
502 virtual void setTerrainViewVisible(
const std::string&,
bool vis);
505 virtual void setHiddenTerrainViews(
const std::string&);
507 virtual bool terrainViewHidden(
const std::string&)
const;
508 virtual const std::set<std::string>& hiddenTerrainViews()
const;
509 virtual std::set<std::string>& hiddenTerrainViews();
515 virtual void showObserverView(
const std::string& view,
int ticksBeforeShow = 0,
bool inPreTick =
true,
516 bool zoomToExtents =
false);
518 virtual void resetObserverForCommandLineTerrain(
int count,
bool inPreTick);
523 virtual void requestSpotReports();
527 virtual void requestStealthCommands();
530 return myStealthCommands;
536 return mySimulationObjectGroupSaveInformation;
541 virtual bool isScenarioFile(
const DtFilename&,
bool exact =
false)
const;
545 virtual void setAsynchLoadBufferTime(
double);
548 virtual void setSaveScenarioToZipFile(
bool);
551 virtual void zoomToExtentsFromScenario(
const DtScenario&)
const;
558 return myScriptedTaskSettingsBackup;
562 void exportSessionSettings(
const std::string& fileName);
565 void importSessionSettings(
const std::string& fileName);
568 void exportScriptedTaskSettings(
const std::string& fileName);
571 void importScriptedTaskSettings(
const std::string& fileName);
574 virtual void setDoNotShowSessionStartupDialog(
bool);
575 bool showSessionStartupDialog()
const;
579 virtual void setAggregateOnCreate(
bool);
580 bool aggregateOnCreate()
const;
583 virtual void setUserDefinedSmoothing(
bool);
584 bool userDefinedSmoothing()
const;
587 virtual void setWindowTitle(
const QString&);
590 virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
593 return myShowSessionStatusDialogs;
597 virtual void setDenySystemScriptEditing(
bool);
598 virtual bool denySystemScriptEditing()
const;
601 virtual void setIndent(
int);
602 virtual int indent()
const;
605 virtual void setWarnOnSystemScriptChange(
bool);
606 virtual bool warnOnSystemScriptChange()
const;
609 virtual void setMonitorScriptedTaskFrameRates(
bool);
610 virtual bool monitorScriptedTaskFrameRates()
const;
613 virtual QString filenameToSaveUnder()
const;
616 virtual void setAutoSave(
bool);
617 virtual bool autoSave()
const;
620 virtual void setShowScenarioDescriptionMessageBox(
bool b);
621 virtual bool showScenarioDescriptionMessageBox()
const;
645 virtual void addAdditionalSmsFile(
const std::string&);
646 virtual void removeAdditionalSmsFile(
const std::string&);
647 virtual void setAdditionalSmsFiles(
const std::vector<DtString>&);
650 virtual std::vector<std::string> defaultSimulationModelSetFiles()
const;
655 virtual void setSaveScenarioFilenameToUseOnFirstSave(
const DtFilename& f);
656 virtual const DtFilename& saveScenarioFilenameToUseOnFirstSave()
const;
661 virtual void slot_onScenarioModified();
664 virtual void editHostilityMatrix(QWidget* parent);
668 QWidget* p,
const Qt::WindowFlags& flags)
const;
671 virtual void addRecentScenario(
const std::string&);
676 virtual bool askAndSaveScriptsForRewind();
688 virtual bool loadTerrain(
const std::string& guiTerrainFilename,
const std::string& simTerrainFilename =
"");
692 virtual bool loadSimTerrain(
const std::string& simTerrainFilename,
bool clearSimTerrain =
false);
695 virtual void resetTerrain();
699 virtual time_t dateAndTimeOfDay()
const;
702 virtual double simulationTime()
const;
705 virtual void setShowQuitDialogOnClose(
bool);
706 virtual bool showQuitDialogOnClose()
const;
708 virtual void resetScriptModifiedToolbarConfiguration();
711 virtual void setKeepOpenTerrainFromCommandLine(
bool);
716 boost::signal<void (const std::set<std::string>&)> signal_terrainViewsHidden;
892 virtual time_t initializeEnvironmentDateTimeOfDay(time_t proposedTime);
895 virtual void scenarioFilenameChanged();
898 virtual void scenarioJustClosed();
901 virtual void errorLoadingScenario();
904 virtual void scenarioClosing();
907 virtual void slot_allBackendsClosed();
914 virtual void cleanupSessionBox();
917 virtual void slot_sessionStartupComplete();
920 virtual void allScenarioObjectsDiscovered();
923 virtual void slot_onScenarioLoaded(
const DtScenario*,
bool emitScenarioLoadedSignal =
true,
bool isNewScenario =
false);
929 virtual bool saveIfDirty(
int* saved = 0,
bool takeSnapshot =
true,
bool showCheckpointSaveTitle =
false);
930 virtual DtJoinSessionDialog* createJoinSessionDialog(QWidget* parent,
const Qt::WindowFlags& flags);
936 virtual void connectSignals(
bool);
939 virtual void requestHazardAreaInformation();
942 virtual void requestOrbatInformation();
945 virtual void reloadScenario(
const std::string& newTerrain);
949 virtual void saveScenario(std::string baseName, std::string newTerrainName);
952 virtual void slot_onScenarioSaved(
bool checkpointSave =
false);
958 virtual void reloadSimulationModelSets(
const std::vector<DtFilename>&,
bool reverse =
false);
961 virtual void slot_onScenarioReloaded(std::string scenarioName);
967 virtual void showSessionStartupDialog();
977 virtual void processHazardAreaInformation(
DtSimMessage*);
980 virtual void restorePreservedScripts();
986 virtual void terrainCleared();
988 virtual void clearFrontEndScenariodData();
992 virtual void postTickSOGLoad(std::string sogFile);
994 virtual void completeScenarioLoad();
995 virtual void completeSimulationObjectGroupLoad();
1003 virtual void loadOverlayFile(
const DtScenario&,
bool removeAll =
true);
1004 virtual void loadSelectionGroupFile(
const DtScenario&);
1005 virtual void loadObserverViewFile(
const DtScenario&,
bool andSetDefaultView =
true);
1007 virtual void loadGuiScenarioSettings(
const DtScenario&);
1012 virtual DtMenu* createMenuFromModelSetManager()
const;
1013 virtual bool isModelSet(
const DtFilename&
filename)
const;
1015 virtual void slot_onSessionUpdated(
int flags);
1019 virtual void slot_settingReceived(
const std::string&,
const DtVrfBackendState*);
1023 virtual void slot_postDeCallback();
1026 virtual void remapTerrainFilenames(
DtScenario*);
1029 virtual void createTerrainFilenameRemapper();
1031 virtual bool sessionPrompt(
const QString& message);
1035 virtual bool openTerrainDatabaseFromUserSelection(
const std::string& simTerrainFilename =
"");
1041 virtual bool loadSessionTerrain(
const std::string& guiTerrainFilename,
const std::string& simTerrainFilename =
"");
1043 virtual bool isSameTerrain(
const std::string& terrain1,
const std::string& terrain2)
const;
1045 virtual void slot_terrainModified();
1048 virtual void slot_propChanged();
1050 virtual void slot_deDestructing();
1052 virtual void slot_terrainToBeCleared();
1053 virtual void slot_terrainCleared();
1055 virtual bool checkWriteGdb(
const std::string& gdb);
1059 virtual void setupScriptedTaskSettings();
1062 virtual QFileInfo findTerrainFile(
const std::string& terrainFile)
const;
1066 virtual bool blockSessionTerrainLoad()
const;
1070 virtual QFileInfo findTerrainFile(
const std::string& terrainFile,
const std::vector<std::string>& searchPaths,
1071 const std::string& extension)
const;
1074 virtual void slot_scenarioAboutToBeSaved(
DtScenario*);
1077 virtual void createSessionStatusBox(
const QString& title,
const QString& message,
int statusType);
1080 virtual void slot_sessionSettingsChanged();
1083 virtual void slot_guiSettingsChanged();
1086 virtual bool eventFilter(
QObject*, QEvent*);
1088 virtual void slot_savedSimulationObjectGroup(
const std::string&);
1090 virtual void postSaveLoadFromSession(QWidget*);
1091 virtual void postSaveLoadFromDialog(QWidget*);
1092 virtual void postSaveNew(QWidget*);
1093 virtual void postSaveQuit();
1094 virtual void postSaveLoad();
1095 virtual void postSaveClose(
bool resetScenario, DtFilename databaseToOpen,
bool forceCloseAll);
1097 virtual void postSaveRewind(
bool preserveScripts,
double simTime);
1099 virtual void nullSaveFunction();
1102 virtual void backendDiscoveryTick();
1104 virtual void addAdditionalCategories();
1107 virtual void commFileMessagesReceived(
const QStringList&);
1108 virtual void statusDialogDestroyed();
1217 Loading = 0x00000001,
1218 Saving = 0x00000002,
1219 Closing = 0x00000004,
1220 Importing = 0x00000008,
1221 CreatingSimulationObjectGroup = 0x00000010
1227 virtual void setMessage(
const QString& message);
1229 virtual void keyPressEvent(QKeyEvent *e);
1231 virtual void terrainGeometryLoaded();
1233 virtual void waitingForTerrainLoad();
1235 virtual void setStatus(Status s);
1242 virtual void accept();
1244 virtual void reject();
1248 virtual void resetAltKey();