VR-Forces 4.2 Class Documentation
DtVrfScenarioManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2013 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 
16 #include <vrfGuiCore/DtMenu.h>
19 #include <vrvCore/DtMenuConfiguration.h>
21 #include <makArchives/DtObserverStateRecordsList.h>
22 
23 #include <vrvUtil/DtVirtualBaseClass.h>
24 #include <vrvUtil/signalslib.h>
25 #include <vrvCore/DtDe.h>
26 
28 
29 #include <boost/signal.hpp>
30 
31 #include <QtCore/QVector>
32 #include <QtCore/QFileInfo>
33 
35 #include <QtCore/qnamespace.h>
36 
38 class DtScenario;
39 class DtScenarioExplorer;
40 class QFileDialog;
41 class QWidget;
42 class QDialog;
43 class DtSimMessage;
44 class DtIfServerMessage;
45 class DtModelSetEntry;
46 
47 namespace makArchives
48 {
49  class DtTerrainOperationRecord;
50  class DtTerrainRecord;
51 }
52 
53 namespace makVrv
54 {
55  class DtRecordSettingsBackupInterface;
56 }
57 
58 namespace makVrf
59 {
60  class DtVrfBackendState;
61  class DtJoinSessionDialog;
62  class DtHostilityMatrixDialog;
63  class DtLoadScenarioDialog;
65  class DtScenarioSettingsDialog;
66  class DtSessionStatusBox;
67  class DtSessionStartupDialog;
68  class DtScenarioDescriptionDialog;
69  class DtSubMenuConfiguration;
70  class DtVrfModelSetManager;
71 
74  {
75  public:
76  DtVrfGuiRecentScenarios(makVrv::DtDe* = 0);
78 
79  virtual ~DtVrfGuiRecentScenarios();
80 
81  virtual DtVrfGuiApplicationSetting* clone() const;
82 
83  const std::vector<std::string> recentScenarios() const
84  {
85  return myRecentScenarios;
86  }
87 
88  int maxSize() const
89  {
90  return myMaxSize;
91  }
92 
94  void setMaxSize(int);
95 
96  void insertScenario(const std::string&, int pos = -1);
97  int removeScenario(const std::string&);
98 
99  virtual std::string classType() const;
100 
101  protected:
102  friend class boost::serialization::access;
103 
104  virtual void write(boost::archive::xml_oarchive& out, const unsigned int);
105  virtual void read(boost::archive::xml_iarchive& in, const unsigned int);
106 
107  protected:
108  std::vector<std::string> myRecentScenarios;
109  unsigned int myMaxSize;
110  };
111 
113  class DT_DLL_VRFGUICOREQT DtVrfScenarioManager : public makVrv::DtVirtualBaseClass
114  {
115  public:
116  friend class DtSessionStatusBox;
117 
119  {
124  DtLoadScenarioSpecifiedInApplication
125  };
126 
128  {
129  Loading = 0x00000001,
130  Saving = 0x00000002,
131  Closing = 0x00000004,
132  AllStatusDialogs = Loading | Saving | Closing
133  };
134 
135  public:
136  DtVrfScenarioManager(makVrv::DtDe&);
137  virtual ~DtVrfScenarioManager();
138 
140  static DtVrfScenarioManager& instance(makVrv::DtDe& de);
141 
143  static void init(makVrv::DtDe&);
144 
145  const DtScenarioExplorer* scenarioExplorer() const
146  {
147  return myExplorer;
148  }
149 
150  const std::vector<DtEntityMapperKey>& controlObjects() const
151  {
152  return myControlObjectTypes;
153  }
154 
155  virtual void addControlObject(const DtEntityMapperKey& key);
156  virtual void removeControlObject(const DtEntityMapperKey& key);
157  virtual void clearControlObjects();
158 
159  virtual bool isControlObject(const DtEntityMapperKey& key) const;
160 
161  virtual void closeScenario(bool resetScenario = true, const DtFilename& databaseToOpen = "");
162  virtual bool loadScenario(const std::string& s);
163  virtual bool loadScenario(const DtScenarioLoadInformation& s);
164  virtual void runScenario();
165  virtual void pauseScenario();
166  virtual void rewindScenario();
167 
172  virtual void setCreateMenuBuilderFlags(DtCreateMenuBuilder::Flags);
173  virtual DtCreateMenuBuilder::Flags createMenuBuilderFlags() const;
174 
177  virtual void tickedLoadScenario();
178 
181  virtual void tickedNewScenario();
182 
184  virtual void loadScenarioFromDialog(QWidget* p);
185  virtual DtLoadScenarioDialog* createLoadScenarioDialog(QWidget*);
186 
191  virtual void setHelpFile(const std::string&, bool save = false);
192  virtual std::string helpFile() const;
193 
196  virtual void setDefaultScenarioFile(const std::string& f, bool save = false);
197  virtual std::string defaultScenarioFile() const;
198 
201  virtual void setDefaultSimulationModelSetFile(const std::string& f, bool save = false);
202  virtual std::string defaultSimulationModelSetFile() const;
203 
206  virtual void rebuildCreateMenu(bool recreate = true);
207 
211  virtual void recreateCreateMenu();
212 
214  virtual void loadTaskMenu(const DtScenarioExplorer& explorer);
215 
217  virtual void loadSetMenu(const DtScenarioExplorer& explorer);
218 
221  virtual makArchives::DtObserverStateRecordsList& observerViews();
222  virtual const makArchives::DtObserverStateRecordsList& observerViews() const;
224 
226  virtual DtScenarioSettingsDialog* createNewScenarioDialog(QWidget* p);
227  virtual void newScenarioFromDialog(QWidget* p);
228 
231  virtual void newScenario(const std::string&);
232 
234  virtual void loadBatchScenario(QWidget*);
235 
245  virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
246 
247  virtual void resignSession(bool closeTerrain = true);
248 
249  virtual bool saveScenarioAs();
250  virtual bool saveScenario();
251 
252  virtual bool canRewind() const;
253 
256  void setValidateForVrfObjects(bool b)
257  {
258  myValidateForVrfObjects = b;
259  }
260 
261  bool validateForVrfObjects() const
262  {
263  return myValidateForVrfObjects;
264  }
265 
266  void setScenarioDirty(bool b)
267  {
268  myScenarioDirty = b;
269  }
270 
271  bool scenarioDirty() const
272  {
273  return myScenarioDirty;
274  }
275 
276  const DtScenario* scenario() const
277  {
278  return myScenario;
279  }
280 
281  void setAskSaveIfScenarioModified(bool b)
282  {
283  myAskSaveIfScenarioModified = b;
284  }
285 
286  bool askSaveIfScenarioModified() const
287  {
288  return myAskSaveIfScenarioModified;
289  }
290 
291  bool joinedToSession() const
292  {
293  return myJoinedToSession;
294  }
295 
296  void setDisplayExistingGdbWarningMessages(bool b)
297  {
298  myDisplayExistingGdbWarningMessage = b;
299  }
300 
301  bool displatExistingGdbWarningMessages() const
302  {
303  return myDisplayExistingGdbWarningMessage;
304  }
305 
306  virtual void setCorrelated(bool);
307 
308  bool correlated() const
309  {
310  return myCorrelated;
311  }
312 
313  DtMenu* createMenu()
314  {
315  return myMenu;
316  }
317 
318  bool initialized() const
319  {
320  return myInitialized;
321  }
322 
323  const DtDeadReckoningSettings& deadReckoningSettings() const
324  {
325  return myDeadReckoningSettings;
326  }
327 
328  void setAllowEditingOnScenarioJoin(bool b)
329  {
330  myAllowEditingOnScenarioJoin = b;
331  }
332 
333  bool allowEditingOnScenarioJoint() const
334  {
335  return myAllowEditingOnScenarioJoin;
336  }
337 
338  virtual std::string currentlyLoadedTerrain() const;
339 
340  virtual void processJoinSession(bool startupMessage = false);
341 
342  virtual void setFromRecord(const DtVrfScriptedTaskSettingsRecord& rec);
343  virtual void loadDefaultScriptedTaskSettings(bool loadOnlyFactorySettings = false);
344  virtual void saveScriptedTaskSettingsAsDefaults();
345  virtual void getRecord(DtVrfScriptedTaskSettingsRecord& rec) const;
346 
349  virtual bool autoJoinSession() const;
350  virtual bool askToJoin() const;
351  virtual bool alwaysJoinWithSessionDatabase() const;
352  virtual bool zoomToScenarioExtentsOnLoad() const;
353  virtual bool alwaysJoinWithOpenDatabase() const;
354  virtual bool displaySessionDialogs() const;
355  virtual bool displayCorrelationWarningMessages() const;
356 
358  virtual bool isDefaultObserverView(const std::string&);
359  virtual std::string defaultObserverView() const;
360  virtual void setDefaultObserverView(const std::string&);
361 
364  virtual void showObserverView(const std::string& view, int ticksBeforeShow = 0, bool inPreTick = true);
365 
367 
369  virtual void zoomToExtentsFromScenario(const DtScenario&) const;
370 
372  virtual void setFavorite(const DtEntityMapperKey&, bool f);
373 
374  makVrv::DtRecordSettingsBackupInterface* scriptedTaskSettingsBackup()
375  {
376  return myScriptedTaskSettingsBackup;
377  }
378 
380  void exportSessionSettings(const std::string& fileName);
381 
383  void importSessionSettings(const std::string& fileName);
384 
386  void exportScriptedTaskSettings(const std::string& fileName);
387 
389  void importScriptedTaskSettings(const std::string& fileName);
390 
392  virtual void setDoNotShowSessionStartupDialog(bool);
393  bool showSessionStartupDialog() const;
394 
396  virtual void setStartupPreference(int);
397  int startupPreference() const;
398 
401  virtual void setAggregateOnCreate(bool);
402  bool aggregateOnCreate() const;
403 
405  virtual void setUserDefinedSmoothing(bool);
406  bool userDefinedSmoothing() const;
407 
409  virtual void setWindowTitle(const QString&);
410 
412  virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
413  SessionStatusDialogs showSessionStatusDialogs() const
414  {
415  return myShowSessionStatusDialogs;
416  }
417 
419  virtual void setDenySystemScriptEditing(bool);
420  virtual bool denySystemScriptEditing() const;
421 
423  virtual void setIndent(int);
424  virtual int indent() const;
425 
427  virtual void setWarnOnSystemScriptChange(bool);
428  virtual bool warnOnSystemScriptChange() const;
429 
431  virtual void setMonitorScriptedTaskFrameRates(bool);
432  virtual bool monitorScriptedTaskFrameRates() const;
433 
435  virtual void setAutoSave(bool);
436  virtual bool autoSave() const;
437 
439  virtual void setShowScenarioDescriptionMessageBox(bool b);
440  virtual bool showScenarioDescriptionMessageBox() const;
441 
443  virtual const DtSubMenuConfiguration& initialCreateMenuConfiguration() const;
444  virtual DtSubMenuConfiguration& initialCreateMenuConfiguration();
445 
447  virtual const DtSubMenuConfiguration& initialTaskMenuConfiguration() const;
448  virtual DtSubMenuConfiguration& initialTaskMenuConfiguration();
449 
451  virtual const DtSubMenuConfiguration& initialSetMenuConfiguration() const;
452  virtual DtSubMenuConfiguration& initialSetMenuConfiguration();
453 
456  virtual void addAdditionalSmsFile(const std::string&);
457  virtual void removeAdditionalSmsFile(const std::string&);
458  virtual const std::vector<DtString>& additionalSmsFiles() const;
459  virtual void setAdditionalSmsFiles(const std::vector<DtString>&);
461 
462  public:
463  virtual void slot_onScenarioModified();
464  virtual void slot_allBackendsClosed();
465 
467  virtual void editHostilityMatrix(QWidget* parent);
468 
470  virtual DtHostilityMatrixDialog* createHostilityMatrixDialog(
471  QWidget* p, const Qt::WindowFlags& flags) const;
472 
474  virtual void addRecentScenario(const std::string&);
475 
479  virtual bool askAndSaveScriptsForRewind();
480 
481  public:
482  boost::signal<void ()> signal_setMenuConfigurationLoaded;
483  boost::signal<void ()> signal_taskMenuConfigurationLoaded;
484  boost::signal<void ()> signal_createMenuConfigurationLoaded;
485  boost::signal<void (const std::string&)> signal_scenarioLoadError;
486  boost::signal<void (DtSessionStartupDialog*)> signal_sessionStartupBoxCreated;
487  boost::signal<void (DtHostilityMatrixDialog*)> signal_hostilityMatrixDialogCreated;
488  boost::signal<void (const DtDeadReckoningSettings&)> signal_deadReckoningSettingsChanged;
489  boost::signal<void (const DtScenarioExplorer&)> signal_scenarioLoaded;
490  boost::signal<void (bool)> signal_sessionStatusChanged;
491  boost::signal<void ()> signal_allBackendsClosed;
492  boost::signal<void ()> signal_rewinding;
493  boost::signal<void ()> signal_scenarioManagerInitialized;
494 
496  boost::signal<void (std::string, std::string)> signal_defaultObserverViewChanged;
497 
499  boost::signal<void ()> signal_scenarioJustLoaded;
500 
502  boost::signal<void (const DtScenarioLoadInformation&)> signal_preLoadScenario;
503 
506  boost::signal<void (const DtScenarioLoadInformation&)> signal_postLoadScenario;
507 
511  boost::signal<void (const std::string&)> signal_preLoadBaseTerrain;
512 
515  boost::signal<void (const std::string&)> signal_preLoadTerrain;
516 
518  boost::signal<void (const std::string&)> signal_postLoadTerrain;
519 
521  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadForceFiles;
522 
524  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadForceFiles;
525 
527  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadArtilleryManager;
528 
530  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadArtilleryManager;
531 
533  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadModelSetFiles;
534 
536  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadModelSetFiles;
537 
539  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadCreateMenu;
540 
542  boost::signal<void (const DtScenarioExplorer&, DtMenu*)> signal_postLoadCreateMenu;
543 
545  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadTaskMenu;
546 
548  boost::signal<void (const DtFilename&, DtVrfModelSetManager*)> signal_modelSetLoaded;
549 
551  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadTaskMenu;
552 
554  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadSetMenu;
555 
557  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadSetMenu;
558 
560  boost::signal<void (const DtScenario&)> signal_preLoadOverlayFile;
561 
563  boost::signal<void (const DtScenario&)> signal_postLoadOverlayFile;
564 
566  boost::signal<void (const DtScenario&)> signal_preLoadSelectionGroupFile;
567 
569  boost::signal<void (const DtScenario&)> signal_postLoadSelectionGroupFile;
570 
572  boost::signal<void (const DtScenario&)> signal_preLoadObserverViewsFile;
573 
575  boost::signal<void (const DtScenario&)> signal_postLoadObserverViewsFile;
576 
578  boost::signal<void (const DtScenarioExplorer&)> signal_createMenuLoaded;
579 
581  boost::signal<void ()> signal_recreateCreateMenu;
582 
584  boost::signal<void ()> signal_recreateTaskMenu;
585 
587  boost::signal<void ()> signal_recreateSetMenu;
588 
590  boost::signal<void (const DtVrfScriptedTaskSettingsRecord&)> signal_scriptedTaskSettingsChanged;
591 
593  boost::signal<void (DtVrfGuiRecentScenarios*)> signal_recentScenariosChanged;
594 
596  boost::signal<void (const DtScenario&)> signal_preLoadGuiScenarioSettings;
597 
599  boost::signal<void (const DtScenario&)> signal_postLoadGuiScenarioSettings;
600 
602  boost::signal<void ()> signal_scenarioClosed;
603 
605  boost::signal<void (QString)> signal_windowTitleSet;
606 
607  protected:
609  virtual void cleanupSessionBox();
610 
612  virtual void slot_sessionStartupComplete();
613 
615  virtual void slot_onScenarioLoaded(const DtScenario*);
616 
617  virtual void slot_checkBackendClosed(const DtVrfBackendState&, int);
618  virtual void slot_checkSimulationState(const DtVrfBackendState&, int);
619 
621  virtual bool saveIfDirty();
622  virtual DtJoinSessionDialog* createJoinSessionDialog(QWidget* parent, const Qt::WindowFlags& flags);
623 
624  virtual void connectSignals(bool);
625 
626  virtual void displayCorrelationWarningMessage();
627 
629  virtual void reloadScenario(const std::string& newTerrain);
630 
633  virtual void saveScenario(std::string baseName, std::string newTerrainName);
634 
636  virtual void slot_onScenarioSaved(std::string scenarioName, std::string newTerrain);
637 
639  virtual void slot_onScenarioReloaded(std::string scenarioName);
640 
642  virtual void setup();
643 
645  virtual void showSessionStartupDialog();
646 
648  virtual void sessionStatusBoxClosed();
649 
652  virtual void processServerMessage(DtSimMessage*);
653 
655  virtual void processForcesMessage(DtSimMessage*);
656 
658  virtual void restorePreservedScripts();
659 
660  protected:
661  virtual void loadIndirectArtilleryManager(const DtScenarioExplorer& explorer);
662  virtual void loadForceFiles(const DtScenarioExplorer& explorer);
663  virtual void loadCreateMenu(const DtScenarioExplorer& explorer);
664  virtual bool loadInitialMenuConfiguration(makVrv::DtMenuConfiguration&, const DtFilename&);
665  virtual void loadOverlayFile(const DtScenario&);
666  virtual void loadSelectionGroupFile(const DtScenario&);
667  virtual void loadObserverViewFile(const DtScenario&, bool andSetDefaultView = true);
668 
669  virtual void loadGuiScenarioSettings(const DtScenario&);
670  virtual void loadModelSetFiles(const DtScenarioExplorer& explorer);
671  virtual bool loadTerrain(const std::string& filePath);
672 
673  virtual DtModelSetEntry* modelSetEntry(const DtEntityMapperKey& key) const;
674  virtual DtMenu* createMenuFromDataDirectories(const DtString&, const DtString& guiDirectories) const;
675  virtual bool isModelSet(const DtFilename& filename) const;
676  virtual bool loadModelSetFromDirectory(const DtFilename& dir, const DtFilename& guiDirectory, DtMenu* m) const;
677 
678  virtual void slot_onSessionUpdated(int flags);
679  virtual void slot_onDuplicateBackendAddress(const DtVrfBackendState&);
680 
681  virtual void slot_backendDiscovered(const DtVrfBackendState&);
682  virtual void slot_settingReceived(const std::string&, const DtVrfBackendState*);
683 
684  virtual bool sessionPrompt(const QString& message);
685 
686  virtual bool openTerrainDatabaseFromUserSelection();
687 
688  virtual bool loadSessionTerrain(const std::string&);
689 
690  virtual bool isSameTerrain(const std::string& terrain1, const std::string& terrain2) const;
691 
692  virtual void slot_terrainModified();
693  virtual void slot_deDestructing();
694 
695  virtual void slot_terrainToBeCleared();
696  virtual void slot_terrainCleared();
697 
698  virtual bool checkWriteGdb(const std::string& gdb);
699 
700  virtual void setupScriptedTaskSettings();
701 
703  virtual QFileInfo findTerrainFile(const std::string& terrainFile) const;
704 
707  virtual QFileInfo findTerrainFile(const std::string& terrainFile, const std::vector<std::string>& searchPaths,
708  const std::string& extension) const;
709 
711  virtual void slot_scenarioAboutToBeSaved(DtScenario*);
712 
714  virtual void createSessionStatusBox(const QString& title, const QString& message, int statusType);
715 
716  protected:
717  makVrv::DtDe& myDe;
722  std::vector<DtEntityMapperKey> myControlObjectTypes;
731  std::string myLoadedTerrain;
732  std::string myTerrainFile;
743 
746  makVrv::DtRecordSettingsBackupInterface* myScriptedTaskSettingsBackup;
747  DtSessionStatusBox* mySessionStatusBox;
749 
754 
755  std::vector<DtString> myAdditionalSmsFiles;
756  makArchives::DtObserverStateRecordsList myObserverViews;
759  };
760 
762 }
763 

Document ID: Generated on Sun Nov 24 19:49:21 EST 2013 from SVN revision 133924
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)