37 #include <vlutil/vlPerformanceStats.h>
39 #include <boost/signal.hpp>
41 #include <QtCore/QVector>
42 #include <QtCore/QFileInfo>
43 #include <QtCore/QEvent>
44 #include <QtWidgets/QDialog>
47 #include <QtCore/qnamespace.h>
64 class DtTerrainOperationRecord;
65 class DtTerrainRecord;
70 class DtRecordSettingsBackupInterface;
73 #define DtFavoritesTopLevelIconRank 99999
74 #define DtRecentTopLevelIconRank 99998
78 class DtFileCommChannel;
79 class DtVrfScenarioRemapFunction;
80 class DtVrfSimBackendManager;
81 class DtVrfBackendState;
82 class DtJoinSessionDialog;
83 class DtHostilityMatrixDialog;
84 class DtLoadScenarioDialog;
85 class DtNeverAskAgainMessageBox;
86 class DtScenarioSettingsDialog;
87 class DtSessionStatusBox;
88 class DtSessionStartupDialog;
89 class DtScenarioDescriptionDialog;
90 class DtSubMenuConfiguration;
91 class DtVrfModelSetManager;
104 const std::vector<std::string> recentScenarios()
const
106 return myRecentScenarios;
115 void setMaxSize(
int);
117 void insertScenario(
const std::string&,
int pos = -1);
118 int removeScenario(
const std::string&);
120 virtual std::string classType()
const;
123 friend class boost::serialization::access;
125 virtual void write(boost::archive::xml_oarchive& out,
const unsigned int);
126 virtual void read(boost::archive::xml_iarchive& in,
const unsigned int);
149 DtLoadSimulationObjectGroupSpecifiedInApplication
154 Loading = 0x00000001,
156 Closing = 0x00000004,
157 Importing = 0x00000008,
158 CreatingSimulationObjectGroup = 0x00000010,
159 Reinitializing = 0x00000020,
160 AllStatusDialogs = Loading | Saving | Closing | Importing | CreatingSimulationObjectGroup | Reinitializing
164 static const QEvent::Type LoadScenarioFromDialogEventType = (QEvent::Type)(QEvent::User + 302);
165 static const QEvent::Type LoadScenarioFromScenarioInformationEventType = (QEvent::Type)(QEvent::User + 303);
201 const std::vector<DtEntityMapperKey>& controlObjects()
const
203 return myControlObjectTypes;
206 bool loadingSessionTerrain()
const
208 return myLoadingSessionTerrain;
211 bool simulationObjectGroupEditingMode()
const
213 return mySimulationObjectGroupEditingMode;
218 virtual void clearControlObjects();
227 virtual bool wantsToSaveTerrain(
bool& ignoredModifications);
230 virtual bool saveGuiTerrain(
bool askForName =
false);
233 virtual bool saveSimTerrain(
bool askForName =
false);
244 virtual bool regenerateNavigationAreas(
bool);
247 virtual DtFilename loadingScenarioFile()
const;
251 virtual bool mapUUIDToScenarioDataFromOobInScenario(
const DtFilename& scenarioFile,
256 virtual void closeScenario(
bool resetScenario =
true,
const DtFilename& databaseToOpen =
"",
bool forceCloseAll =
false);
260 virtual void runScenario();
261 virtual void pauseScenario();
265 virtual bool rewindScenario(
double toSimTime = -1);
279 virtual void tickedLoadScenario(
const DtString& scenarioName =
"",
bool useDefaultRemappingFunction =
false);
283 virtual void tickedNewScenario();
286 virtual void loadScenarioFromDialog(QWidget* p);
288 virtual void importScenarioFromDialog(QWidget* p);
291 virtual void loadScenarioFromSessionDialog(QWidget* p);
297 virtual void setHelpFile(
const std::string&,
bool save =
false);
298 virtual std::string helpFile()
const;
302 virtual void setDefaultScenarioFile(
const std::string& f,
bool save =
false);
303 virtual std::string defaultScenarioFile()
const;
306 virtual void setSimulationObjectGroupTerrain(
const std::string& f,
bool save =
false);
307 virtual std::string simulationObjectGroupTerrain()
const;
312 virtual void setDefaultSimulationModelSetFile(
const std::string& f,
bool save =
false);
313 virtual std::string defaultSimulationModelSetFile()
const;
317 virtual void rebuildCreateMenu(
bool recreate =
true);
320 virtual void reloadVisuals();
323 virtual DtString scenarioSaveExtension(
bool includesDot =
true)
const;
328 virtual void recreateCreateMenu();
331 virtual void cleanupBackupFile(
double simTime)
const;
334 virtual std::string language()
const;
344 virtual void removeSimulationObjectGroupTasksSets(
const DtScenarioExplorer& explorer);
348 virtual DtFilename saveScenarioName(
bool askIfDoesNotExist =
true,
bool* asked = 0,
bool createDefaultIfEmpty =
false,
349 bool useScenarioNameAsSeed =
true)
const;
354 return mySimulationObjectsCategoryInformation;
359 return mySimulationObjectsCategoryInformation;
363 virtual void setupWindowTitleBasedOnScenario();
373 virtual void newScenarioFromDialog(QWidget* p);
379 virtual void newScenario(
const std::string&,
const std::string& sms =
"");
382 virtual void loadBatchScenario(QWidget*);
393 virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
395 virtual void resignSession(
bool closeTerrain =
true);
397 virtual bool saveScenarioAs();
401 virtual int saveScenario();
403 virtual bool canRewind()
const;
407 void setValidateForVrfObjects(
bool b)
409 myValidateForVrfObjects = b;
412 bool validateForVrfObjects()
const
414 return myValidateForVrfObjects;
417 virtual void setScenarioDirty(
bool b);
419 void setReadyToQuit(
bool b)
424 bool scenarioDirty()
const
426 return myScenarioDirty;
434 void setAskSaveIfScenarioModified(
bool b)
436 myAskSaveIfScenarioModified = b;
439 bool askSaveIfScenarioModified()
const
441 return myAskSaveIfScenarioModified;
444 bool joinedToSession()
const
446 return myJoinedToSession;
449 void setDisplayExistingGdbWarningMessages(
bool b)
451 myDisplayExistingGdbWarningMessage = b;
454 bool displatExistingGdbWarningMessages()
const
456 return myDisplayExistingGdbWarningMessage;
459 virtual void setCorrelated(
bool);
461 bool correlated()
const
471 bool initialized()
const
473 return myInitialized;
478 return myDeadReckoningSettings;
481 void setAllowEditingOnScenarioJoin(
bool b)
483 myAllowEditingOnScenarioJoin = b;
486 bool allowEditingOnScenarioJoint()
const
488 return myAllowEditingOnScenarioJoin;
491 virtual std::string currentlyLoadedTerrain()
const;
493 virtual void processJoinSession(
bool startupMessage =
false);
496 virtual void loadDefaultScriptedTaskSettings(
bool loadOnlyFactorySettings =
false);
497 virtual void saveScriptedTaskSettingsAsDefaults();
502 virtual void getSplitRecord(std::vector<DtVrfScriptedTaskSettingsRecord>& rec,
503 std::vector<std::string>& fileNames) {};
512 virtual bool autoJoinSession()
const;
513 virtual bool automaticallyOpenSessionDatabaseWithoutJoiningSession()
const;
514 virtual bool askToJoin()
const;
515 virtual bool alwaysJoinWithSessionDatabase()
const;
516 virtual bool zoomToScenarioExtentsOnLoad()
const;
517 virtual bool alwaysJoinWithOpenDatabase()
const;
518 virtual bool displaySessionDialogs()
const;
519 virtual bool displayCorrelationWarningMessages()
const;
520 virtual void displayCorrelationWarningMessage();
524 virtual bool isDefaultObserverView(
const std::string&);
525 virtual std::string defaultObserverView(
bool& is2D)
const;
526 virtual void setDefaultObserverView(
const std::string&);
527 virtual void setTerrainViewVisible(
const std::string&,
bool vis);
530 virtual void setHiddenTerrainViews(
const std::string&);
532 virtual bool terrainViewHidden(
const std::string&)
const;
533 virtual const std::set<std::string>& hiddenTerrainViews()
const;
534 virtual std::set<std::string>& hiddenTerrainViews();
540 virtual void showObserverView(
const std::string& view,
int ticksBeforeShow = 0,
bool inPreTick =
true,
541 bool zoomToExtents =
false);
543 virtual void resetObserverForCommandLineTerrain(
int count,
bool inPreTick);
548 virtual void requestSpotReports();
552 virtual void requestStealthCommands();
555 return myStealthCommands;
561 return mySimulationObjectGroupSaveInformation;
566 virtual bool isScenarioFile(
const DtFilename&,
bool exact =
false)
const;
570 virtual void setAsynchLoadBufferTime(
double);
573 virtual void setSaveScenarioToZipFile(
bool);
576 virtual void zoomToExtentsFromScenario(
const DtScenario&)
const;
583 return myScriptedTaskSettingsBackup;
587 void exportSessionSettings(
const std::string& fileName);
590 void importSessionSettings(
const std::string& fileName);
593 void exportScriptedTaskSettings(
const std::string& fileName);
596 void importScriptedTaskSettings(
const std::string& fileName);
599 virtual void setDoNotShowSessionStartupDialog(
bool);
600 bool showSessionStartupDialog()
const;
604 virtual void setAggregateOnCreate(
bool);
605 bool aggregateOnCreate()
const;
608 virtual void setUserDefinedSmoothing(
bool);
609 bool userDefinedSmoothing()
const;
612 virtual void setWindowTitle(
const QString&);
615 virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
618 return myShowSessionStatusDialogs;
622 virtual void setDenySystemScriptEditing(
bool);
623 virtual bool denySystemScriptEditing()
const;
626 virtual void setIndent(
int);
627 virtual int indent()
const;
630 virtual void setWarnOnSystemScriptChange(
bool);
631 virtual bool warnOnSystemScriptChange()
const;
634 virtual void setMonitorScriptedTaskFrameRates(
bool);
635 virtual bool monitorScriptedTaskFrameRates()
const;
638 virtual QString filenameToSaveUnder()
const;
641 virtual void setAutoSave(
bool);
642 virtual bool autoSave()
const;
645 virtual void setShowScenarioDescriptionMessageBox(
bool b);
646 virtual bool showScenarioDescriptionMessageBox()
const;
670 virtual void addAdditionalSmsFile(
const std::string&);
671 virtual void removeAdditionalSmsFile(
const std::string&);
672 virtual void setAdditionalSmsFiles(
const std::vector<DtString>&);
675 virtual std::vector<std::string> defaultSimulationModelSetFiles()
const;
680 virtual void setSaveScenarioFilenameToUseOnFirstSave(
const DtFilename& f);
681 virtual const DtFilename& saveScenarioFilenameToUseOnFirstSave()
const;
686 virtual void slot_onScenarioModified();
689 virtual void editHostilityMatrix(QWidget* parent);
693 QWidget* p,
const Qt::WindowFlags& flags)
const;
696 virtual void addRecentScenario(
const std::string&);
701 virtual bool askAndSaveScriptsForRewind();
710 virtual void setShowLoadErrors(
bool);
711 virtual bool showLoadErrors()
const;
717 virtual bool loadTerrain(
const std::string& guiTerrainFilename,
const std::string& simTerrainFilename =
"");
721 virtual bool loadSimTerrain(
const std::string& simTerrainFilename,
bool clearSimTerrain =
false);
724 virtual void resetTerrain();
728 virtual time_t dateAndTimeOfDay()
const;
731 virtual double simulationTime()
const;
736 virtual void setShowQuitDialogOnClose(
bool,
bool saveChanges =
true);
737 virtual bool showQuitDialogOnClose()
const;
739 virtual void resetScriptModifiedToolbarConfiguration();
742 virtual void setKeepOpenTerrainFromCommandLine(
bool);
744 virtual void slot_defaultIconListChanged();
746 virtual void slot_forcesChanged();
754 boost::signal<void (const std::set<std::string>&)> signal_terrainViewsHidden;
933 virtual int quitApplication(
const QString& title,
const QString& message,
bool& quitBackend,
bool hasCancelButton =
true);
937 virtual time_t initializeEnvironmentDateTimeOfDay(time_t proposedTime);
940 virtual void scenarioFilenameChanged();
943 virtual void scenarioJustClosed();
946 virtual void errorLoadingScenario();
949 virtual void scenarioClosing();
952 virtual void slot_allBackendsClosed();
959 virtual void cleanupSessionBox();
962 virtual void slot_sessionStartupComplete();
965 virtual void allScenarioObjectsDiscovered();
968 virtual void slot_onScenarioLoaded(
const DtScenario*,
bool emitScenarioLoadedSignal =
true,
bool isNewScenario =
false);
974 virtual bool saveIfDirty(
int* saved = 0,
bool takeSnapshot =
true,
bool showCheckpointSaveTitle =
false,
bool quittingApplication =
false,
975 int* dialogResult = 0);
976 virtual DtJoinSessionDialog* createJoinSessionDialog(QWidget* parent,
const Qt::WindowFlags& flags);
982 virtual void watchForScenarioObjectsDiscovered();
984 virtual void connectSignals(
bool);
987 virtual void requestHazardAreaInformation();
990 virtual void requestOrbatInformation();
993 virtual void reloadScenario(
const std::string& newTerrain);
997 virtual void saveScenario(std::string baseName, std::string newTerrainName);
1000 virtual void slot_onScenarioSaved(
bool checkpointSave =
false);
1006 virtual void reloadSimulationModelSets(
const std::vector<DtFilename>&,
bool reverse =
false);
1009 virtual void slot_onScenarioReloaded(std::string scenarioName);
1015 virtual void showSessionStartupDialog();
1025 virtual void processHazardAreaInformation(
DtSimMessage*);
1028 virtual void restorePreservedScripts();
1034 virtual void terrainCleared();
1036 virtual void clearFrontEndScenariodData();
1039 virtual void quitAllBackends();
1041 virtual void checkCloseStatus();
1045 virtual void postTickSOGLoad(std::string sogFile);
1047 virtual void completeScenarioLoad();
1048 virtual void completeSimulationObjectGroupLoad();
1056 virtual void loadOverlayFile(
const DtScenario&,
bool removeAll =
true);
1057 virtual void loadSelectionGroupFile(
const DtScenario&);
1058 virtual void loadObserverViewFile(
const DtScenario&,
bool andSetDefaultView =
true);
1060 virtual void loadGuiScenarioSettings(
const DtScenario&);
1065 virtual DtMenu* createMenuFromModelSetManager()
const;
1066 virtual bool isModelSet(
const DtFilename&
filename)
const;
1068 virtual void slot_onSessionUpdated(
int flags);
1072 virtual void slot_settingReceived(
const std::string&,
const DtVrfBackendState*);
1076 virtual void slot_postDeCallback();
1079 virtual void remapTerrainFilenames(
DtScenario*);
1082 virtual void createTerrainFilenameRemapper();
1084 virtual bool sessionPrompt(
const QString& message);
1088 virtual bool openTerrainDatabaseFromUserSelection(
const std::string& simTerrainFilename =
"");
1094 virtual bool loadSessionTerrain(
const std::string& guiTerrainFilename,
const std::string& simTerrainFilename =
"");
1096 virtual bool isSameTerrain(
const std::string& terrain1,
const std::string& terrain2)
const;
1098 virtual void slot_terrainModified();
1101 virtual void slot_propChanged();
1103 virtual void slot_deDestructing();
1105 virtual void slot_terrainToBeCleared();
1106 virtual void slot_terrainCleared();
1108 virtual bool checkWriteGdb(
const std::string& gdb);
1112 virtual void setupScriptedTaskSettings();
1115 virtual QFileInfo findTerrainFile(
const std::string& terrainFile)
const;
1119 virtual bool blockSessionTerrainLoad()
const;
1123 virtual QFileInfo findTerrainFile(
const std::string& terrainFile,
const std::vector<std::string>& searchPaths,
1124 const std::string& extension)
const;
1127 virtual void slot_scenarioAboutToBeSaved(
DtScenario*);
1130 virtual void createSessionStatusBox(
const QString& title,
const QString& message,
int statusType);
1133 virtual void slot_sessionSettingsChanged();
1136 virtual void slot_guiSettingsChanged();
1141 virtual void slot_savedSimulationObjectGroup(
const std::string&);
1143 virtual void postSaveLoadFromSession(QWidget*);
1144 virtual void postSaveLoadFromDialog(QWidget*);
1145 virtual void postSaveNew(QWidget*);
1146 virtual void postSaveQuit();
1147 virtual void postSaveLoad();
1148 virtual void postSaveClose(
bool resetScenario, DtFilename databaseToOpen,
bool forceCloseAll);
1150 virtual void postSaveRewind(
bool preserveScripts,
double simTime);
1152 virtual void nullSaveFunction();
1155 virtual void backendDiscoveryTick();
1157 virtual void addAdditionalCategories();
1160 virtual void commFileMessagesReceived(
const QStringList&);
1161 virtual void statusDialogDestroyed();
1278 Loading = 0x00000001,
1279 Saving = 0x00000002,
1280 Closing = 0x00000004,
1281 Importing = 0x00000008,
1282 CreatingSimulationObjectGroup = 0x00000010,
1283 Reinitializing = 0x00000020
1289 virtual void setMessage(
const QString& message);
1291 virtual void keyPressEvent(QKeyEvent *e);
1293 virtual void terrainGeometryLoaded();
1295 virtual void waitingForTerrainLoad();
1297 virtual void setStatus(Status s);
1304 virtual void accept();
1306 virtual void reject();
1310 virtual void resetAltKey();