VR-Forces 4.1.1 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>
23 
25 #include <vrvUtil/signalslib.h>
26 #include <vrvCore/DtDe.h>
27 
29 
30 #include <boost/signal.hpp>
31 
32 #include <QtCore/QVector>
33 #include <QtCore/QFileInfo>
34 
36 #include <QtCore/qnamespace.h>
37 
39 class DtScenario;
40 class DtScenarioExplorer;
41 class QFileDialog;
42 class QWidget;
43 class QDialog;
44 class DtSimMessage;
45 class DtIfServerMessage;
46 class DtModelSetEntry;
47 
48 namespace makArchives
49 {
50  class DtTerrainOperationRecord;
51  class DtTerrainRecord;
52 }
53 
54 namespace makVrv
55 {
56  class DtRecordSettingsBackupInterface;
57 }
58 
59 namespace makVrf
60 {
61  class DtVrfBackendState;
62  class DtJoinSessionDialog;
63  class DtHostilityMatrixDialog;
64  class DtLoadScenarioDialog;
66  class DtScenarioSettingsDialog;
67  class DtSessionStatusBox;
68  class DtSessionStartupDialog;
69  class DtScenarioDescriptionDialog;
70  class DtSubMenuConfiguration;
71  class DtVrfModelSetManager;
72 
75  {
76  public:
79 
80  virtual ~DtVrfGuiRecentScenarios();
81 
82  virtual DtVrfGuiApplicationSetting* clone() const;
83 
84  const std::vector<std::string> recentScenarios() const
85  {
86  return myRecentScenarios;
87  }
88 
89  int maxSize() const
90  {
91  return myMaxSize;
92  }
93 
95  void setMaxSize(int);
96 
97  void insertScenario(const std::string&, int pos = -1);
98  int removeScenario(const std::string&);
99 
100  virtual std::string classType() const;
101 
102  protected:
103  friend class boost::serialization::access;
104 
105  virtual void write(boost::archive::xml_oarchive& out, const unsigned int);
106  virtual void read(boost::archive::xml_iarchive& in, const unsigned int);
107 
108  protected:
109  std::vector<std::string> myRecentScenarios;
110  unsigned int myMaxSize;
111  };
112 
115  {
116  public:
117  friend class DtSessionStatusBox;
118 
120  {
125  DtLoadScenarioSpecifiedInApplication
126  };
127 
129  {
130  Loading = 0x00000001,
131  Saving = 0x00000002,
132  Closing = 0x00000004,
133  AllStatusDialogs = Loading | Saving | Closing
134  };
135 
136  public:
138  virtual ~DtVrfScenarioManager();
139 
141  static DtVrfScenarioManager& instance(makVrv::DtDe& de);
142 
144  static void init(makVrv::DtDe&);
145 
146  const DtScenarioExplorer* scenarioExplorer() const
147  {
148  return myExplorer;
149  }
150 
151  const std::vector<DtEntityMapperKey>& controlObjects() const
152  {
153  return myControlObjectTypes;
154  }
155 
156  virtual void addControlObject(const DtEntityMapperKey& key);
157  virtual void removeControlObject(const DtEntityMapperKey& key);
158  virtual void clearControlObjects();
159 
160  virtual bool isControlObject(const DtEntityMapperKey& key) const;
161 
162  virtual void closeScenario(bool resetScenario = true);
163  virtual bool loadScenario(const std::string& s);
164  virtual bool loadScenario(const DtScenarioLoadInformation& s);
165  virtual void runScenario();
166  virtual void pauseScenario();
167  virtual void rewindScenario();
168 
173  virtual void setCreateMenuBuilderFlags(DtCreateMenuBuilder::Flags);
174  virtual DtCreateMenuBuilder::Flags createMenuBuilderFlags() const;
175 
178  virtual void tickedLoadScenario();
179 
182  virtual void tickedNewScenario();
183 
185  virtual void loadScenarioFromDialog(QWidget* p);
186  virtual DtLoadScenarioDialog* createLoadScenarioDialog(QWidget*);
187 
192  virtual void setHelpFile(const std::string&, bool save = false);
193  virtual std::string helpFile() const;
194 
197  virtual void setDefaultScenarioFile(const std::string& f, bool save = false);
198  virtual std::string defaultScenarioFile() const;
199 
202  virtual void setDefaultSimulationModelSetFile(const std::string& f, bool save = false);
203  virtual std::string defaultSimulationModelSetFile() const;
204 
207  virtual void rebuildCreateMenu();
208 
212  virtual void recreateCreateMenu();
213 
215  virtual void loadTaskMenu(const DtScenarioExplorer& explorer);
216 
218  virtual void loadSetMenu(const DtScenarioExplorer& explorer);
219 
222  virtual makArchives::DtObserverStateRecordsList& observerViews();
223  virtual const makArchives::DtObserverStateRecordsList& observerViews() const;
225 
227  virtual DtScenarioSettingsDialog* createNewScenarioDialog(QWidget* p);
228  virtual void newScenarioFromDialog(QWidget* p);
229 
232  virtual void newScenario(const std::string&);
233 
235  virtual void loadBatchScenario(QWidget*);
236 
246  virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
247 
248  virtual void resignSession(bool closeTerrain = true);
249 
250  virtual bool saveScenarioAs();
251  virtual bool saveScenario();
252 
253  virtual bool canRewind() const;
254 
257  void setValidateForVrfObjects(bool b)
258  {
259  myValidateForVrfObjects = b;
260  }
261 
262  bool validateForVrfObjects() const
263  {
264  return myValidateForVrfObjects;
265  }
266 
267  void setScenarioDirty(bool b)
268  {
269  myScenarioDirty = b;
270  }
271 
272  bool scenarioDirty() const
273  {
274  return myScenarioDirty;
275  }
276 
277  const DtScenario* scenario() const
278  {
279  return myScenario;
280  }
281 
282  void setAskSaveIfScenarioModified(bool b)
283  {
284  myAskSaveIfScenarioModified = b;
285  }
286 
287  bool askSaveIfScenarioModified() const
288  {
289  return myAskSaveIfScenarioModified;
290  }
291 
292  bool joinedToSession() const
293  {
294  return myJoinedToSession;
295  }
296 
297  void setDisplayExistingGdbWarningMessages(bool b)
298  {
299  myDisplayExistingGdbWarningMessage = b;
300  }
301 
302  bool displatExistingGdbWarningMessages() const
303  {
304  return myDisplayExistingGdbWarningMessage;
305  }
306 
307  virtual void setCorrelated(bool);
308 
309  bool correlated() const
310  {
311  return myCorrelated;
312  }
313 
314  DtMenu* createMenu()
315  {
316  return myMenu;
317  }
318 
319  bool initialized() const
320  {
321  return myInitialized;
322  }
323 
324  const DtDeadReckoningSettings& deadReckoningSettings() const
325  {
326  return myDeadReckoningSettings;
327  }
328 
329  void setAllowEditingOnScenarioJoin(bool b)
330  {
331  myAllowEditingOnScenarioJoin = b;
332  }
333 
334  bool allowEditingOnScenarioJoint() const
335  {
336  return myAllowEditingOnScenarioJoin;
337  }
338 
339  virtual std::string currentlyLoadedTerrain() const;
340 
341  virtual void processJoinSession(bool startupMessage = false);
342 
343  virtual void setFromRecord(const DtVrfSessionSettingsRecord& rec);
344  virtual void setFromRecord(const DtVrfScriptedTaskSettingsRecord& rec);
345  virtual void loadDefaultSessionSettings(bool loadOnlyFactorySettings = false);
346  virtual void loadDefaultScriptedTaskSettings(bool loadOnlyFactorySettings = false);
347  virtual void saveSessionSettingsAsDefaults();
348  virtual void saveScriptedTaskSettingsAsDefaults();
349  virtual void getRecord(DtVrfSessionSettingsRecord& rec) const;
350  virtual void getRecord(DtVrfScriptedTaskSettingsRecord& rec) const;
351 
354  virtual bool autoJoinSession() const;
355  virtual bool askToJoin() const;
356  virtual bool alwaysJoinWithSessionDatabase() const;
357  virtual bool zoomToScenarioExtentsOnLoad() const;
358  virtual bool alwaysJoinWithOpenDatabase() const;
359  virtual bool displaySessionDialogs() const;
360  virtual bool displayCorrelationWarningMessages() const;
361 
363  virtual bool isDefaultObserverView(const std::string&);
364  virtual std::string defaultObserverView() const;
365  virtual void setDefaultObserverView(const std::string&);
366 
369  virtual void showObserverView(const std::string& view);
370 
372 
374  virtual void zoomToExtentsFromScenario(const DtScenario&) const;
375 
377  virtual void setFavorite(const DtEntityMapperKey&, bool f);
378 
380  {
381  return mySessionSettingsBackup;
382  }
383 
384  makVrv::DtRecordSettingsBackupInterface* scriptedTaskSettingsBackup()
385  {
386  return myScriptedTaskSettingsBackup;
387  }
388 
390  void exportSessionSettings(const std::string& fileName);
391 
393  void importSessionSettings(const std::string& fileName);
394 
396  void exportScriptedTaskSettings(const std::string& fileName);
397 
399  void importScriptedTaskSettings(const std::string& fileName);
400 
402  virtual void setDoNotShowSessionStartupDialog(bool);
403  bool showSessionStartupDialog() const;
404 
406  virtual void setStartupPreference(int);
407  int startupPreference() const;
408 
411  virtual void setAggregateOnCreate(bool);
412  bool aggregateOnCreate() const;
413 
415  virtual void setUserDefinedSmoothing(bool);
416  bool userDefinedSmoothing() const;
417 
419  virtual void setWindowTitle(const QString&);
420 
422  virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
423  SessionStatusDialogs showSessionStatusDialogs() const
424  {
425  return myShowSessionStatusDialogs;
426  }
427 
429  virtual void setDenySystemScriptEditing(bool);
430  virtual bool denySystemScriptEditing() const;
431 
433  virtual void setIndent(int);
434  virtual int indent() const;
435 
437  virtual void setWarnOnSystemScriptChange(bool);
438  virtual bool warnOnSystemScriptChange() const;
439 
441  virtual void setMonitorScriptedTaskFrameRates(bool);
442  virtual bool monitorScriptedTaskFrameRates() const;
443 
445  virtual void setAutoSave(bool);
446  virtual bool autoSave() const;
447 
449  virtual void setShowScenarioDescriptionMessageBox(bool b, bool save);
450  virtual bool showScenarioDescriptionMessageBox() const;
451 
453  virtual const DtSubMenuConfiguration& initialCreateMenuConfiguration() const;
454  virtual DtSubMenuConfiguration& initialCreateMenuConfiguration();
455 
457  virtual const DtSubMenuConfiguration& initialTaskMenuConfiguration() const;
458  virtual DtSubMenuConfiguration& initialTaskMenuConfiguration();
459 
461  virtual const DtSubMenuConfiguration& initialSetMenuConfiguration() const;
462  virtual DtSubMenuConfiguration& initialSetMenuConfiguration();
463 
466  virtual void addAdditionalSmsFile(const std::string&);
467  virtual void removeAdditionalSmsFile(const std::string&);
468  virtual const std::vector<DtString>& additionalSmsFiles() const;
469  virtual void setAdditionalSmsFiles(const std::vector<DtString>&);
471 
472  public:
473  virtual void slot_onScenarioModified();
474  virtual void slot_allBackendsClosed();
475 
477  virtual void editHostilityMatrix(QWidget* parent);
478 
480  virtual DtHostilityMatrixDialog* createHostilityMatrixDialog(
481  QWidget* p, const Qt::WindowFlags& flags) const;
482 
484  virtual void addRecentScenario(const std::string&);
485 
489  virtual bool askAndSaveScriptsForRewind();
490 
491  public:
492  boost::signal<void ()> signal_setMenuConfigurationLoaded;
493  boost::signal<void ()> signal_taskMenuConfigurationLoaded;
494  boost::signal<void ()> signal_createMenuConfigurationLoaded;
495  boost::signal<void (const std::string&)> signal_scenarioLoadError;
496  boost::signal<void (DtSessionStartupDialog*)> signal_sessionStartupBoxCreated;
497  boost::signal<void (DtHostilityMatrixDialog*)> signal_hostilityMatrixDialogCreated;
498  boost::signal<void (const DtDeadReckoningSettings&)> signal_deadReckoningSettingsChanged;
499  boost::signal<void (const DtScenarioExplorer&)> signal_scenarioLoaded;
500  boost::signal<void (bool)> signal_sessionStatusChanged;
501  boost::signal<void ()> signal_allBackendsClosed;
502  boost::signal<void ()> signal_rewinding;
503  boost::signal<void ()> signal_scenarioManagerInitialized;
504 
506  boost::signal<void (std::string, std::string)> signal_defaultObserverViewChanged;
507 
509  boost::signal<void ()> signal_scenarioJustLoaded;
510 
512  boost::signal<void (const DtScenarioLoadInformation&)> signal_preLoadScenario;
513 
516  boost::signal<void (const DtScenarioLoadInformation&)> signal_postLoadScenario;
517 
521  boost::signal<void (const std::string&)> signal_preLoadBaseTerrain;
522 
525  boost::signal<void (const std::string&)> signal_preLoadTerrain;
526 
528  boost::signal<void (const std::string&)> signal_postLoadTerrain;
529 
531  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadForceFiles;
532 
534  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadForceFiles;
535 
537  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadArtilleryManager;
538 
540  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadArtilleryManager;
541 
543  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadModelSetFiles;
544 
546  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadModelSetFiles;
547 
549  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadCreateMenu;
550 
552  boost::signal<void (const DtScenarioExplorer&, DtMenu*)> signal_postLoadCreateMenu;
553 
555  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadTaskMenu;
556 
558  boost::signal<void (const DtFilename&, DtVrfModelSetManager*)> signal_modelSetLoaded;
559 
561  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadTaskMenu;
562 
564  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadSetMenu;
565 
567  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadSetMenu;
568 
570  boost::signal<void (const DtScenario&)> signal_preLoadOverlayFile;
571 
573  boost::signal<void (const DtScenario&)> signal_postLoadOverlayFile;
574 
576  boost::signal<void (const DtScenario&)> signal_preLoadSelectionGroupFile;
577 
579  boost::signal<void (const DtScenario&)> signal_postLoadSelectionGroupFile;
580 
582  boost::signal<void (const DtScenario&)> signal_preLoadObserverViewsFile;
583 
585  boost::signal<void (const DtScenario&)> signal_postLoadObserverViewsFile;
586 
588  boost::signal<void (const DtScenarioExplorer&)> signal_createMenuLoaded;
589 
591  boost::signal<void ()> signal_recreateCreateMenu;
592 
594  boost::signal<void ()> signal_recreateTaskMenu;
595 
597  boost::signal<void ()> signal_recreateSetMenu;
598 
600  boost::signal<void (const DtVrfSessionSettingsRecord&)> signal_sessionSettingsChanged;
601 
603  boost::signal<void (const DtVrfScriptedTaskSettingsRecord&)> signal_scriptedTaskSettingsChanged;
604 
606  boost::signal<void (DtVrfGuiRecentScenarios*)> signal_recentScenariosChanged;
607 
609  boost::signal<void (const DtScenario&)> signal_preLoadGuiScenarioSettings;
610 
612  boost::signal<void (const DtScenario&)> signal_postLoadGuiScenarioSettings;
613 
615  boost::signal<void ()> signal_scenarioClosed;
616 
618  boost::signal<void (QString)> signal_windowTitleSet;
619 
620  protected:
622  virtual void cleanupSessionBox();
623 
625  virtual void slot_sessionStartupComplete();
626 
628  virtual void slot_onScenarioLoaded(const DtScenario*);
629 
630  virtual void slot_checkBackendClosed(const DtVrfBackendState&, int);
631  virtual void slot_checkSimulationState(const DtVrfBackendState&, int);
632 
634  virtual bool saveIfDirty();
635  virtual DtJoinSessionDialog* createJoinSessionDialog(QWidget* parent, const Qt::WindowFlags& flags);
636 
637  virtual void connectSignals(bool);
638 
639  virtual void displayCorrelationWarningMessage();
640 
642  virtual void reloadScenario(const std::string& newTerrain);
643 
646  virtual void saveScenario(std::string baseName, std::string newTerrainName);
647 
649  virtual void slot_onScenarioSaved(std::string scenarioName, std::string newTerrain);
650 
652  virtual void slot_onScenarioReloaded(std::string scenarioName);
653 
655  virtual void setup();
656 
658  virtual void showSessionStartupDialog();
659 
661  virtual void sessionStatusBoxClosed();
662 
665  virtual void processServerMessage(DtSimMessage*);
666 
668  virtual void processForcesMessage(DtSimMessage*);
669 
671  virtual void restorePreservedScripts();
672 
673  protected:
674  virtual void loadIndirectArtilleryManager(const DtScenarioExplorer& explorer);
675  virtual void loadForceFiles(const DtScenarioExplorer& explorer);
676  virtual void loadCreateMenu(const DtScenarioExplorer& explorer);
677  virtual bool loadInitialMenuConfiguration(makVrv::DtMenuConfiguration&, const DtFilename&);
678  virtual void loadOverlayFile(const DtScenario&);
679  virtual void loadSelectionGroupFile(const DtScenario&);
680  virtual void loadObserverViewFile(const DtScenario&, bool andSetDefaultView = true);
681 
682  virtual void loadGuiScenarioSettings(const DtScenario&);
683  virtual void loadModelSetFiles(const DtScenarioExplorer& explorer);
684  virtual bool loadTerrain(const std::string& filePath);
685 
686  virtual DtModelSetEntry* modelSetEntry(const DtEntityMapperKey& key) const;
687  virtual DtMenu* createMenuFromFile(const DtString&) const;
688  virtual bool isModelSet(const DtFilename& filename) const;
689  virtual bool loadModelSet(const DtFilename& filename, DtMenu* m) const;
690 
691  virtual void slot_onSessionUpdated(int flags);
692  virtual void slot_onDuplicateBackendAddress(const DtVrfBackendState&);
693 
694  virtual void slot_backendDiscovered(const DtVrfBackendState&);
695  virtual void slot_settingReceived(const std::string&, const DtVrfBackendState*);
696 
697  virtual bool sessionPrompt(const QString& message);
698 
699  virtual bool openTerrainDatabaseFromUserSelection();
700 
701  virtual bool loadSessionTerrain(const std::string&);
702 
703  virtual bool isSameTerrain(const std::string& terrain1, const std::string& terrain2) const;
704 
705  virtual void slot_terrainModified();
706  virtual void slot_deDestructing();
707 
708  virtual void slot_terrainToBeCleared();
709  virtual void slot_terrainCleared();
710 
711  virtual bool checkWriteGdb(const std::string& gdb);
712 
713  virtual void setupSessionSettings();
714  virtual void setupScriptedTaskSettings();
715 
717  virtual QFileInfo findTerrainFile(const std::string& terrainFile) const;
718 
721  virtual QFileInfo findTerrainFile(const std::string& terrainFile, const std::vector<std::string>& searchPaths,
722  const std::string& extension) const;
723 
725  virtual void slot_scenarioAboutToBeSaved(DtScenario*);
726 
728  virtual void createSessionStatusBox(const QString& title, const QString& message, int statusType);
729 
730  protected:
736  std::vector<DtEntityMapperKey> myControlObjectTypes;
745  std::string myLoadedTerrain;
756 
762  DtSessionStatusBox* mySessionStatusBox;
764 
769 
770  std::vector<DtString> myAdditionalSmsFiles;
772  };
773 
775 }
776 

Document ID: Generated on Mon Apr 8 19:24:01 EDT 2013 from SVN revision 125877
Copyright © 2005-2013 VT MÄK. All Rights Reserved (www.mak.com)