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);
202 virtual bool regenerateNavigationAreas(
bool);
204 virtual void closeScenario(
bool resetScenario =
true,
const DtFilename& databaseToOpen =
"");
208 virtual void runScenario();
209 virtual void pauseScenario();
210 virtual bool rewindScenario();
224 virtual void tickedLoadScenario(
const DtString& scenarioName =
"",
bool useDefaultRemappingFunction =
false);
228 virtual void tickedNewScenario();
231 virtual void loadScenarioFromDialog(
QWidget* p);
233 virtual void importScenarioFromDialog(
QWidget* p);
236 virtual void loadScenarioFromSessionDialog(
QWidget* p);
242 virtual void setHelpFile(
const std::string&,
bool save =
false);
243 virtual std::string helpFile()
const;
247 virtual void setDefaultScenarioFile(
const std::string& f,
bool save =
false);
248 virtual std::string defaultScenarioFile()
const;
251 virtual void setSimulationObjectGroupTerrain(
const std::string& f,
bool save =
false);
252 virtual std::string simulationObjectGroupTerrain()
const;
257 virtual void setDefaultSimulationModelSetFile(
const std::string& f,
bool save =
false);
258 virtual std::string defaultSimulationModelSetFile()
const;
262 virtual void rebuildCreateMenu(
bool recreate =
true);
267 virtual void recreateCreateMenu();
270 virtual std::string language()
const;
280 virtual void removeSimulationObjectGroupTasksSets(
const DtScenarioExplorer& explorer);
290 virtual void newScenarioFromDialog(
QWidget* p);
296 virtual void newScenario(
const std::string&,
const std::string& sms =
"");
299 virtual void loadBatchScenario(
QWidget*);
310 virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
312 virtual void resignSession(
bool closeTerrain =
true);
314 virtual bool saveScenarioAs();
315 virtual bool saveScenario();
317 virtual bool canRewind()
const;
321 void setValidateForVrfObjects(
bool b)
323 myValidateForVrfObjects = b;
326 bool validateForVrfObjects()
const
328 return myValidateForVrfObjects;
331 void setScenarioDirty(
bool b)
336 void setReadyToQuit(
bool b)
341 bool scenarioDirty()
const
343 return myScenarioDirty;
351 void setAskSaveIfScenarioModified(
bool b)
353 myAskSaveIfScenarioModified = b;
356 bool askSaveIfScenarioModified()
const
358 return myAskSaveIfScenarioModified;
361 bool joinedToSession()
const
363 return myJoinedToSession;
366 void setDisplayExistingGdbWarningMessages(
bool b)
368 myDisplayExistingGdbWarningMessage = b;
371 bool displatExistingGdbWarningMessages()
const
373 return myDisplayExistingGdbWarningMessage;
376 virtual void setCorrelated(
bool);
378 bool correlated()
const
388 bool initialized()
const
390 return myInitialized;
395 return myDeadReckoningSettings;
398 void setAllowEditingOnScenarioJoin(
bool b)
400 myAllowEditingOnScenarioJoin = b;
403 bool allowEditingOnScenarioJoint()
const
405 return myAllowEditingOnScenarioJoin;
408 virtual std::string currentlyLoadedTerrain()
const;
410 virtual void processJoinSession(
bool startupMessage =
false);
413 virtual void loadDefaultScriptedTaskSettings(
bool loadOnlyFactorySettings =
false);
414 virtual void saveScriptedTaskSettingsAsDefaults();
419 virtual bool autoJoinSession()
const;
420 virtual bool automaticallyOpenSessionDatabaseWithoutJoiningSession()
const;
421 virtual bool askToJoin()
const;
422 virtual bool alwaysJoinWithSessionDatabase()
const;
423 virtual bool zoomToScenarioExtentsOnLoad()
const;
424 virtual bool alwaysJoinWithOpenDatabase()
const;
425 virtual bool displaySessionDialogs()
const;
426 virtual bool displayCorrelationWarningMessages()
const;
429 virtual bool isDefaultObserverView(
const std::string&);
430 virtual std::string defaultObserverView()
const;
431 virtual void setDefaultObserverView(
const std::string&);
435 virtual void showObserverView(
const std::string& view,
int ticksBeforeShow = 0,
bool inPreTick =
true,
436 bool zoomToExtents =
false);
441 virtual void requestSpotReports();
445 virtual void requestStealthCommands();
448 return myStealthCommands;
454 return mySimulationObjectGroupSaveInformation;
459 virtual void setAsynchLoadBufferTime(
double);
462 virtual void zoomToExtentsFromScenario(
const DtScenario&)
const;
469 return myScriptedTaskSettingsBackup;
473 void exportSessionSettings(
const std::string& fileName);
476 void importSessionSettings(
const std::string& fileName);
479 void exportScriptedTaskSettings(
const std::string& fileName);
482 void importScriptedTaskSettings(
const std::string& fileName);
485 virtual void setDoNotShowSessionStartupDialog(
bool);
486 bool showSessionStartupDialog()
const;
490 virtual void setAggregateOnCreate(
bool);
491 bool aggregateOnCreate()
const;
494 virtual void setUserDefinedSmoothing(
bool);
495 bool userDefinedSmoothing()
const;
498 virtual void setWindowTitle(
const QString&);
501 virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
504 return myShowSessionStatusDialogs;
508 virtual void setDenySystemScriptEditing(
bool);
509 virtual bool denySystemScriptEditing()
const;
512 virtual void setIndent(
int);
513 virtual int indent()
const;
516 virtual void setWarnOnSystemScriptChange(
bool);
517 virtual bool warnOnSystemScriptChange()
const;
520 virtual void setMonitorScriptedTaskFrameRates(
bool);
521 virtual bool monitorScriptedTaskFrameRates()
const;
524 virtual QString filenameToSaveUnder()
const;
527 virtual void setAutoSave(
bool);
528 virtual bool autoSave()
const;
531 virtual void setShowScenarioDescriptionMessageBox(
bool b);
532 virtual bool showScenarioDescriptionMessageBox()
const;
552 virtual void addAdditionalSmsFile(
const std::string&);
553 virtual void removeAdditionalSmsFile(
const std::string&);
554 virtual void setAdditionalSmsFiles(
const std::vector<DtString>&);
557 virtual std::vector<std::string> defaultSimulationModelSetFiles()
const;
562 virtual void setSaveScenarioFilenameToUseOnFirstSave(
const DtFilename& f);
563 virtual const DtFilename& saveScenarioFilenameToUseOnFirstSave()
const;
566 virtual void slot_onScenarioModified();
569 virtual void editHostilityMatrix(
QWidget* parent);
573 QWidget* p,
const Qt::WindowFlags& flags)
const;
576 virtual void addRecentScenario(
const std::string&);
581 virtual bool askAndSaveScriptsForRewind();
590 virtual bool loadTerrain(
const std::string& filePath);
593 virtual void resetTerrain();
597 virtual time_t dateAndTimeOfDay()
const;
600 virtual double simulationTime()
const;
603 virtual void setShowQuitDialogOnClose(
bool);
604 virtual bool showQuitDialogOnClose()
const;
606 virtual bool usingAsynchIO()
const;
766 virtual void scenarioFilenameChanged();
769 virtual void scenarioJustClosed();
772 virtual void errorLoadingScenario();
775 virtual void scenarioClosing();
778 virtual void slot_allBackendsClosed();
785 virtual void cleanupSessionBox();
788 virtual void slot_sessionStartupComplete();
791 virtual void allScenarioObjectsDiscovered();
794 virtual void slot_onScenarioLoaded(
const DtScenario*,
bool emitScenarioLoadedSignal =
true);
800 virtual bool saveIfDirty(
bool* saved = 0);
803 virtual void connectSignals(
bool);
805 virtual void displayCorrelationWarningMessage();
808 virtual void requestHazardAreaInformation();
811 virtual void reloadScenario(
const std::string& newTerrain);
815 virtual void saveScenario(std::string baseName, std::string newTerrainName);
818 virtual void slot_onScenarioSaved(std::string scenarioName, std::string newTerrain);
824 virtual void reloadSimulationModelSets(
const std::vector<DtFilename>&,
bool reverse =
false);
827 virtual void slot_onScenarioReloaded(std::string scenarioName);
833 virtual void showSessionStartupDialog();
836 virtual void sessionStatusBoxClosed();
846 virtual void processHazardAreaInformation(
DtSimMessage*);
852 virtual void restorePreservedScripts();
855 virtual void scenarioWasRewound();
858 virtual void terrainCleared();
861 virtual void completeScenarioLoad();
862 virtual void completeSimulationObjectGroupLoad();
868 virtual void loadOverlayFile(
const DtScenario&,
bool removeAll =
true);
869 virtual void loadSelectionGroupFile(
const DtScenario&);
870 virtual void loadObserverViewFile(
const DtScenario&,
bool andSetDefaultView =
true);
872 virtual void loadGuiScenarioSettings(
const DtScenario&);
876 virtual DtMenu* createMenuFromModelSetManager()
const;
877 virtual bool isModelSet(
const DtFilename& filename)
const;
879 virtual void slot_onSessionUpdated(
int flags);
887 virtual void slot_postDeCallback();
889 virtual bool sessionPrompt(
const QString& message);
891 virtual bool openTerrainDatabaseFromUserSelection();
893 virtual bool loadSessionTerrain(
const std::string&);
895 virtual bool isSameTerrain(
const std::string& terrain1,
const std::string& terrain2)
const;
897 virtual void slot_terrainModified();
900 virtual void slot_propChanged();
902 virtual void slot_deDestructing();
904 virtual void slot_terrainToBeCleared();
905 virtual void slot_terrainCleared();
907 virtual bool checkWriteGdb(
const std::string& gdb);
911 virtual void setupScriptedTaskSettings();
914 virtual QFileInfo findTerrainFile(
const std::string& terrainFile)
const;
918 virtual QFileInfo findTerrainFile(
const std::string& terrainFile,
const std::vector<std::string>& searchPaths,
919 const std::string& extension)
const;
922 virtual void slot_scenarioAboutToBeSaved(
DtScenario*);
925 virtual void createSessionStatusBox(
const QString& title,
const QString& message,
int statusType);
928 virtual void slot_sessionSettingsChanged();
931 virtual bool eventFilter(
QObject*, QEvent*);
933 virtual void slot_savedSimulationObjectGroup(
const std::string&);
936 virtual void commFileMessagesReceived(
const QStringList&);
1028 Loading = 0x00000001,
1029 Saving = 0x00000002,
1030 Closing = 0x00000004,
1031 Importing = 0x00000008,
1032 CreatingSimulationObjectGroup = 0x00000010
1038 virtual void setMessage(
const QString& message);
1040 virtual void keyPressEvent(QKeyEvent *e);
1042 virtual void terrainGeometryLoaded();
1044 virtual void waitingForTerrainLoad();
1046 virtual void setStatus(Status s);
1053 virtual void accept();
1055 virtual void reject();