VR-Forces 4.3 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vrfScenarioManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2015 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 
16 #include <vrfGuiCore/menu.h>
22 
25 #include <vrvUtil/signalslib.h>
26 #include <vrvCore/DtDe.h>
28 
29 #include <vrfutil/scenario.h>
32 #include <vrfutil/stealthCommand.h>
33 
34 #include <boost/signal.hpp>
35 
36 #include <QtCore/QVector>
37 #include <QtCore/QFileInfo>
38 #include <QtGui/QDialog>
39 
41 #include <QtCore/qnamespace.h>
42 
43 class QLabel;
44 class DtScenario;
45 class DtScenarioExplorer;
46 class QFileDialog;
47 class QWidget;
48 class QDialog;
49 class DtSimMessage;
50 class DtIfServerMessage;
51 class DtModelSetEntry;
52 class QTranslator;
54 
55 namespace makArchives
56 {
57  class DtTerrainOperationRecord;
58  class DtTerrainRecord;
59 }
60 
61 namespace makVrv
62 {
63  class DtRecordSettingsBackupInterface;
64 }
65 
66 namespace makVrf
67 {
68  class DtVrfScenarioRemapFunction;
69  class DtVrfSimBackendManager;
70  class DtVrfBackendState;
71  class DtJoinSessionDialog;
72  class DtHostilityMatrixDialog;
73  class DtLoadScenarioDialog;
74  class DtNeverAskAgainMessageBox;
75  class DtScenarioSettingsDialog;
76  class DtSessionStatusBox;
77  class DtSessionStartupDialog;
78  class DtScenarioDescriptionDialog;
79  class DtSubMenuConfiguration;
80  class DtVrfModelSetManager;
81 
84  {
85  public:
88 
89  virtual ~DtVrfGuiRecentScenarios();
90 
91  virtual DtVrfGuiApplicationSetting* clone() const;
92 
93  const std::vector<std::string> recentScenarios() const
94  {
95  return myRecentScenarios;
96  }
97 
98  int maxSize() const
99  {
100  return myMaxSize;
101  }
102 
104  void setMaxSize(int);
105 
106  void insertScenario(const std::string&, int pos = -1);
107  int removeScenario(const std::string&);
108 
109  virtual std::string classType() const;
110 
111  protected:
112  friend class boost::serialization::access;
113 
114  virtual void write(boost::archive::xml_oarchive& out, const unsigned int);
115  virtual void read(boost::archive::xml_iarchive& in, const unsigned int);
116 
117  protected:
118  std::vector<std::string> myRecentScenarios;
119  unsigned int myMaxSize;
120  };
121 
124  {
125  Q_OBJECT
126 
127  public:
128  friend class DtSessionStatusBox;
129 
131  {
137  DtTerrainActionUseSessionTerrainWithoutJoining
138  };
139 
141  {
142  Loading = 0x00000001,
143  Saving = 0x00000002,
144  Closing = 0x00000004,
145  AllStatusDialogs = Loading | Saving | Closing
146  };
147 
148  public:
150  virtual ~DtVrfScenarioManager();
151 
153  static DtVrfScenarioManager& instance(makVrv::DtDe& de);
154 
156  static void init(makVrv::DtDe&);
157 
158  const DtScenarioExplorer* scenarioExplorer() const
159  {
160  return myExplorer;
161  }
162 
163  const std::vector<DtEntityMapperKey>& controlObjects() const
164  {
165  return myControlObjectTypes;
166  }
167 
168  virtual void addControlObject(const DtEntityMapperKey& key);
169  virtual void removeControlObject(const DtEntityMapperKey& key);
170  virtual void clearControlObjects();
171 
172  virtual bool isControlObject(const DtEntityMapperKey& key) const;
173 
174  virtual void closeScenario(bool resetScenario = true, const DtFilename& databaseToOpen = "");
175  virtual bool loadScenario(const std::string& s, DtVrfScenarioRemapFunction* remapping = 0);
176  virtual bool loadScenario(const DtScenarioLoadInformation& s);
177  virtual void runScenario();
178  virtual void pauseScenario();
179  virtual void rewindScenario();
180 
185  virtual void setCreateMenuBuilderFlags(DtCreateMenuBuilder::Flags);
186  virtual DtCreateMenuBuilder::Flags createMenuBuilderFlags() const;
187 
190  virtual void tickedLoadScenario();
191 
194  virtual void tickedNewScenario();
195 
197  virtual void loadScenarioFromDialog(QWidget* p);
198  virtual DtLoadScenarioDialog* createLoadScenarioDialog(QWidget*);
199 
204  virtual void setHelpFile(const std::string&, bool save = false);
205  virtual std::string helpFile() const;
206 
209  virtual void setDefaultScenarioFile(const std::string& f, bool save = false);
210  virtual std::string defaultScenarioFile() const;
211 
215  virtual void setDefaultSimulationModelSetFile(const std::string& f, bool save = false);
216  virtual std::string defaultSimulationModelSetFile() const;
217 
220  virtual void rebuildCreateMenu(bool recreate = true);
221 
225  virtual void recreateCreateMenu();
226 
228  virtual void loadTaskMenu(const DtScenarioExplorer& explorer);
229 
231  virtual void loadSetMenu(const DtScenarioExplorer& explorer);
232 
235  virtual makArchives::DtObserverStateRecordsList& observerViews();
236  virtual const makArchives::DtObserverStateRecordsList& observerViews() const;
238 
240  virtual DtScenarioSettingsDialog* createNewScenarioDialog(QWidget* p);
241  virtual void newScenarioFromDialog(QWidget* p);
242 
245  virtual void newScenario(const std::string&);
246 
248  virtual void loadBatchScenario(QWidget*);
249 
259  virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
260 
261  virtual void resignSession(bool closeTerrain = true);
262 
263  virtual bool saveScenarioAs();
264  virtual bool saveScenario();
265 
266  virtual bool canRewind() const;
267 
270  void setValidateForVrfObjects(bool b)
271  {
272  myValidateForVrfObjects = b;
273  }
274 
275  bool validateForVrfObjects() const
276  {
277  return myValidateForVrfObjects;
278  }
279 
280  void setScenarioDirty(bool b)
281  {
282  myScenarioDirty = b;
283  }
284 
285  bool scenarioDirty() const
286  {
287  return myScenarioDirty;
288  }
289 
290  const DtScenario* scenario() const
291  {
292  return myScenario;
293  }
294 
295  void setAskSaveIfScenarioModified(bool b)
296  {
297  myAskSaveIfScenarioModified = b;
298  }
299 
300  bool askSaveIfScenarioModified() const
301  {
302  return myAskSaveIfScenarioModified;
303  }
304 
305  bool joinedToSession() const
306  {
307  return myJoinedToSession;
308  }
309 
310  void setDisplayExistingGdbWarningMessages(bool b)
311  {
312  myDisplayExistingGdbWarningMessage = b;
313  }
314 
315  bool displatExistingGdbWarningMessages() const
316  {
317  return myDisplayExistingGdbWarningMessage;
318  }
319 
320  virtual void setCorrelated(bool);
321 
322  bool correlated() const
323  {
324  return myCorrelated;
325  }
326 
327  DtMenu* createMenu()
328  {
329  return myMenu;
330  }
331 
332  bool initialized() const
333  {
334  return myInitialized;
335  }
336 
337  const DtDeadReckoningSettings& deadReckoningSettings() const
338  {
339  return myDeadReckoningSettings;
340  }
341 
342  void setAllowEditingOnScenarioJoin(bool b)
343  {
344  myAllowEditingOnScenarioJoin = b;
345  }
346 
347  bool allowEditingOnScenarioJoint() const
348  {
349  return myAllowEditingOnScenarioJoin;
350  }
351 
352  virtual std::string currentlyLoadedTerrain() const;
353 
354  virtual void processJoinSession(bool startupMessage = false);
355 
356  virtual void setFromRecord(const DtVrfScriptedTaskSettingsRecord& rec);
357  virtual void loadDefaultScriptedTaskSettings(bool loadOnlyFactorySettings = false);
358  virtual void saveScriptedTaskSettingsAsDefaults();
359  virtual void getRecord(DtVrfScriptedTaskSettingsRecord& rec) const;
360 
363  virtual bool autoJoinSession() const;
364  virtual bool automaticallyOpenSessionDatabaseWithoutJoiningSession() const;
365  virtual bool askToJoin() const;
366  virtual bool alwaysJoinWithSessionDatabase() const;
367  virtual bool zoomToScenarioExtentsOnLoad() const;
368  virtual bool alwaysJoinWithOpenDatabase() const;
369  virtual bool displaySessionDialogs() const;
370  virtual bool displayCorrelationWarningMessages() const;
371 
373  virtual bool isDefaultObserverView(const std::string&);
374  virtual std::string defaultObserverView() const;
375  virtual void setDefaultObserverView(const std::string&);
376 
379  virtual void showObserverView(const std::string& view, int ticksBeforeShow = 0, bool inPreTick = true,
380  bool zoomToExtents = false);
381 
383 
385  virtual void requestSpotReports();
386 
389  virtual void requestStealthCommands();
390  const DtStealthCommands& stealthCommands() const
391  {
392  return myStealthCommands;
393  }
394 
396  virtual void zoomToExtentsFromScenario(const DtScenario&) const;
397 
399  virtual void setFavorite(const DtEntityMapperKey&, bool f);
400 
401  makVrv::DtRecordSettingsBackupInterface* scriptedTaskSettingsBackup()
402  {
403  return myScriptedTaskSettingsBackup;
404  }
405 
407  void exportSessionSettings(const std::string& fileName);
408 
410  void importSessionSettings(const std::string& fileName);
411 
413  void exportScriptedTaskSettings(const std::string& fileName);
414 
416  void importScriptedTaskSettings(const std::string& fileName);
417 
419  virtual void setDoNotShowSessionStartupDialog(bool);
420  bool showSessionStartupDialog() const;
421 
423  virtual void setStartupPreference(int);
424  int startupPreference() const;
425 
428  virtual void setAggregateOnCreate(bool);
429  bool aggregateOnCreate() const;
430 
432  virtual void setUserDefinedSmoothing(bool);
433  bool userDefinedSmoothing() const;
434 
436  virtual void setWindowTitle(const QString&);
437 
439  virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
440  SessionStatusDialogs showSessionStatusDialogs() const
441  {
442  return myShowSessionStatusDialogs;
443  }
444 
446  virtual void setDenySystemScriptEditing(bool);
447  virtual bool denySystemScriptEditing() const;
448 
450  virtual void setIndent(int);
451  virtual int indent() const;
452 
454  virtual void setWarnOnSystemScriptChange(bool);
455  virtual bool warnOnSystemScriptChange() const;
456 
458  virtual void setMonitorScriptedTaskFrameRates(bool);
459  virtual bool monitorScriptedTaskFrameRates() const;
460 
462  virtual void setAutoSave(bool);
463  virtual bool autoSave() const;
464 
466  virtual void setShowScenarioDescriptionMessageBox(bool b);
467  virtual bool showScenarioDescriptionMessageBox() const;
468 
470  virtual const DtSubMenuConfiguration& initialCreateMenuConfiguration() const;
471  virtual DtSubMenuConfiguration& initialCreateMenuConfiguration();
472 
474  virtual const DtSubMenuConfiguration& initialTaskMenuConfiguration() const;
475  virtual DtSubMenuConfiguration& initialTaskMenuConfiguration();
476 
478  virtual const makVrv::DtToolbarConfiguration& initialToolbarConfiguration() const;
479  virtual makVrv::DtToolbarConfiguration& initialToolbarConfiguration();
480 
482  virtual const DtSubMenuConfiguration& initialSetMenuConfiguration() const;
483  virtual DtSubMenuConfiguration& initialSetMenuConfiguration();
484 
487  virtual void addAdditionalSmsFile(const std::string&);
488  virtual void removeAdditionalSmsFile(const std::string&);
489  virtual void setAdditionalSmsFiles(const std::vector<DtString>&);
490 
492  virtual std::vector<std::string> defaultSimulationModelSetFiles() const;
494 
495  public:
496  virtual void slot_onScenarioModified();
497 
499  virtual void editHostilityMatrix(QWidget* parent);
500 
502  virtual DtHostilityMatrixDialog* createHostilityMatrixDialog(
503  QWidget* p, const Qt::WindowFlags& flags) const;
504 
506  virtual void addRecentScenario(const std::string&);
507 
511  virtual bool askAndSaveScriptsForRewind();
512 
514  virtual const DtRwHazardAreaInformation& hazardAreaInformation() const;
515 
517  virtual makVrv::DtUnicode hazardAreaAgentTypeFor(const DtEntityType&, const DtString& agentKey) const;
518 
520  virtual bool loadTerrain(const std::string& filePath);
521 
523  virtual void resetTerrain();
524 
527  virtual time_t dateAndTimeOfDay() const;
528 
530  virtual double simulationTime() const;
531 
533  virtual void setShowQuitDialogOnClose(bool);
534  virtual bool showQuitDialogOnClose() const;
535 
536  public:
537 
538  boost::signal<void (DtSessionStatusBox*)> signal_sessionStatusDialogCreated;
539  boost::signal<void ()> signal_allScenarioObjectsDiscovered;
540  boost::signal<void ()> signal_forcesChanged;
541  boost::signal<void ()> signal_scenarioRewound;
542  boost::signal<void ()> signal_setMenuConfigurationLoaded;
543  boost::signal<void ()> signal_taskMenuConfigurationLoaded;
544  boost::signal<void ()> signal_createMenuConfigurationLoaded;
545  boost::signal<void (const std::string&)> signal_scenarioLoadError;
546  boost::signal<void (const std::string&)> signal_scenarioSaveError;
547  boost::signal<void (DtSessionStartupDialog*)> signal_sessionStartupBoxCreated;
548  boost::signal<void (DtHostilityMatrixDialog*)> signal_hostilityMatrixDialogCreated;
549  boost::signal<void (const DtDeadReckoningSettings&)> signal_deadReckoningSettingsChanged;
550  boost::signal<void (const DtScenarioExplorer&)> signal_scenarioLoaded;
551  boost::signal<void (bool)> signal_sessionStatusChanged;
552  boost::signal<void ()> signal_allBackendsClosed;
553  boost::signal<void ()> signal_rewinding;
554  boost::signal<void ()> signal_scenarioManagerInitialized;
555 
557  boost::signal<void (std::string, std::string)> signal_defaultObserverViewChanged;
558 
560  boost::signal<void (const DtScenarioLoadInformation&)> signal_preLoadScenario;
561 
564  boost::signal<void (const DtScenarioLoadInformation&)> signal_postLoadScenario;
565 
569  boost::signal<void (const std::string&)> signal_preLoadBaseTerrain;
570 
573  boost::signal<void (const std::string&)> signal_preLoadTerrain;
574 
576  boost::signal<void (const std::string&)> signal_postLoadTerrain;
577 
579  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadForceFiles;
580 
582  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadForceFiles;
583 
585  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadArtilleryManager;
586 
588  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadArtilleryManager;
589 
591  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadModelSetFiles;
592 
594  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadModelSetFiles;
595 
597  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadCreateMenu;
598 
600  boost::signal<void (const DtScenarioExplorer&, DtMenu*)> signal_postLoadCreateMenu;
601 
603  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadTaskMenu;
604 
606  boost::signal<void (const DtFilename&, DtVrfModelSetManager*)> signal_modelSetLoaded;
607 
609  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadTaskMenu;
610 
612  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadSetMenu;
613 
615  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadSetMenu;
616 
618  boost::signal<void (const DtScenario&)> signal_preLoadOverlayFile;
619 
621  boost::signal<void (const DtScenario&)> signal_postLoadOverlayFile;
622 
624  boost::signal<void (const DtScenario&)> signal_preLoadSelectionGroupFile;
625 
627  boost::signal<void (const DtScenario&)> signal_postLoadSelectionGroupFile;
628 
630  boost::signal<void (const DtScenario&)> signal_preLoadObserverViewsFile;
631 
633  boost::signal<void (const DtScenario&)> signal_postLoadObserverViewsFile;
634 
636  boost::signal<void (const DtScenarioExplorer&)> signal_createMenuLoaded;
637 
639  boost::signal<void ()> signal_recreateCreateMenu;
640 
642  boost::signal<void ()> signal_recreateTaskMenu;
643 
645  boost::signal<void ()> signal_recreateSetMenu;
646 
648  boost::signal<void (const DtVrfScriptedTaskSettingsRecord&)> signal_scriptedTaskSettingsChanged;
649 
651  boost::signal<void (DtVrfGuiRecentScenarios*)> signal_recentScenariosChanged;
652 
654  boost::signal<void (const DtScenario&)> signal_preLoadGuiScenarioSettings;
655 
657  boost::signal<void (const DtScenario&)> signal_postLoadGuiScenarioSettings;
658 
660  boost::signal<void ()> signal_scenarioClosed;
661 
663  boost::signal<void ()> signal_scenarioClosing;
664 
666  boost::signal<void ()> signal_scenarioJustLoaded;
667 
669  boost::signal<void (QString)> signal_windowTitleSet;
670 
672  boost::signal<void (const DtRwHazardAreaInformation&)> signal_hazardAreaInformationReceived;
673 
676 
677  protected:
679  virtual void scenarioJustClosed();
680 
682  virtual void errorLoadingScenario();
683 
685  virtual void scenarioClosing();
686 
688  virtual void slot_allBackendsClosed();
689 
692  virtual void loadTranslationsForModelSet(DtSimulationModelSet*);
693 
695  virtual void cleanupSessionBox();
696 
698  virtual void slot_sessionStartupComplete();
699 
701  virtual void allScenarioObjectsDiscovered();
702 
704  virtual void slot_onScenarioLoaded(const DtScenario*);
705 
706  virtual void slot_checkBackendClosed(const DtVrfBackendState&, int);
707  virtual void slot_checkSimulationState(const DtVrfBackendState&, int);
708 
710  virtual bool saveIfDirty(bool* saved = 0);
711  virtual DtJoinSessionDialog* createJoinSessionDialog(QWidget* parent, const Qt::WindowFlags& flags);
712 
713  virtual void connectSignals(bool);
714 
715  virtual void displayCorrelationWarningMessage();
716 
718  virtual void requestHazardAreaInformation();
719 
721  virtual void reloadScenario(const std::string& newTerrain);
722 
725  virtual void saveScenario(std::string baseName, std::string newTerrainName);
726 
728  virtual void slot_onScenarioSaved(std::string scenarioName, std::string newTerrain);
729 
734  virtual void reloadSimulationModelSets(const std::vector<DtFilename>&, bool reverse = false);
735 
737  virtual void slot_onScenarioReloaded(std::string scenarioName);
738 
740  void setup();
741 
743  virtual void showSessionStartupDialog();
744 
746  virtual void sessionStatusBoxClosed();
747 
750  virtual void processServerMessage(DtSimMessage*);
751 
753  virtual void processStealthCommands(DtSimMessage*);
754 
756  virtual void processHazardAreaInformation(DtSimMessage*);
757 
759  virtual void processForcesMessage(DtSimMessage*);
760 
762  virtual void restorePreservedScripts();
763 
765  virtual void scenarioWasRewound();
766 
768  virtual void terrainCleared();
769 
770  protected:
771  virtual void completeScenarioLoad();
772 
773  virtual void loadIndirectArtilleryManager(const DtScenarioExplorer& explorer);
774  virtual void loadForceFiles(const DtScenarioExplorer& explorer);
775  virtual void loadCreateMenu(const DtScenarioExplorer& explorer);
776  virtual bool loadInitialMenuConfiguration(makVrv::DtMenuConfiguration&, const DtFilename&);
777  virtual void loadOverlayFile(const DtScenario&);
778  virtual void loadSelectionGroupFile(const DtScenario&);
779  virtual void loadObserverViewFile(const DtScenario&, bool andSetDefaultView = true);
780 
781  virtual void loadGuiScenarioSettings(const DtScenario&);
782  virtual void loadModelSetFiles(const DtScenarioExplorer& explorer);
783 
784  virtual DtModelSetEntry* modelSetEntry(const DtEntityMapperKey& key) const;
785  virtual DtMenu* createMenuFromModelSetManager() const;
786  virtual bool isModelSet(const DtFilename& filename) const;
787 
788  virtual void slot_onSessionUpdated(int flags);
789  virtual void slot_onDuplicateBackendAddress(const DtVrfBackendState&);
790 
791  virtual void slot_backendDiscovered(const DtVrfBackendState&);
792  virtual void slot_settingReceived(const std::string&, const DtVrfBackendState*);
793 
796  virtual void slot_postDeCallback();
797 
798  virtual bool sessionPrompt(const QString& message);
799 
800  virtual bool openTerrainDatabaseFromUserSelection();
801 
802  virtual bool loadSessionTerrain(const std::string&);
803 
804  virtual bool isSameTerrain(const std::string& terrain1, const std::string& terrain2) const;
805 
806  virtual void slot_terrainModified();
807  virtual void slot_deDestructing();
808 
809  virtual void slot_terrainToBeCleared();
810  virtual void slot_terrainCleared();
811 
812  virtual bool checkWriteGdb(const std::string& gdb);
813 
814  virtual DtSessionStatusBox* createSessionStatusBox();
815 
816  virtual void setupScriptedTaskSettings();
817 
819  virtual QFileInfo findTerrainFile(const std::string& terrainFile) const;
820 
823  virtual QFileInfo findTerrainFile(const std::string& terrainFile, const std::vector<std::string>& searchPaths,
824  const std::string& extension) const;
825 
827  virtual void slot_scenarioAboutToBeSaved(DtScenario*);
828 
830  virtual void createSessionStatusBox(const QString& title, const QString& message, int statusType);
831 
833  virtual void slot_sessionSettingsChanged();
834 
836  virtual bool eventFilter(QObject*, QEvent*);
837  protected:
843  std::vector<DtEntityMapperKey> myControlObjectTypes;
853  std::string myLoadedTerrain;
854  std::string myTerrainFile;
866 
872 
878 
879  std::vector<DtString> myAdditionalSmsFiles;
884 
886 
887  QString myWindowTitle;
888 
889  std::map<std::string, QTranslator*> myTranslators;
890 
892 
898 
903  };
904 
907  {
908  public:
909  enum Status
910  {
911  None = 0x00000000,
912  Loading = 0x00000001,
913  Saving = 0x00000002,
914  Closing = 0x00000004
915  };
916 
918  virtual ~DtSessionStatusBox();
919 
920  virtual void setMessage(const QString& message);
921 
922  virtual void keyPressEvent(QKeyEvent *e);
923 
924  virtual void terrainGeometryLoaded();
925 
926  virtual void waitingForTerrainLoad();
927 
928  virtual void setStatus(Status s);
929 
930  Status status() const
931  {
932  return myStatus;
933  }
934 
935  virtual void accept();
936 
937  virtual void reject();
938 
939  boost::signal<void ()> signal_closeScenario;
940 
941  protected:
950  };
951 
953 }
954 

Document ID: Generated on Wed Mar 11 21:20:57 EDT 2015 from SVN revision 150940
Copyright © 2005-2014 VT MÄK. All Rights Reserved (www.mak.com)