VR-Forces 4.1 Class Documentation
DtVrfScenarioManager.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2012 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 
8 
10 
11 #pragma once
12 
14 
16 #include <vrfGuiCore/DtMenu.h>
22 
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:
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 
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:
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);
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();
207 
211  virtual void recreateCreateMenu();
212 
214  virtual void loadTaskMenu(const DtScenarioExplorer& explorer);
215 
217  virtual void loadSetMenu(const DtScenarioExplorer& explorer);
218 
220  virtual DtScenarioSettingsDialog* createNewScenarioDialog(QWidget* p);
221  virtual void newScenarioFromDialog(QWidget* p);
222 
225  virtual void newScenario(const std::string&);
226 
228  virtual void loadBatchScenario(QWidget*);
229 
239  virtual bool joinSession(DtJoinSessionTerrainAction terrainAction = DtTerrainActionUseSessionTerrain);
240 
241  virtual void resignSession(bool closeTerrain = true);
242 
243  virtual bool saveScenarioAs();
244  virtual bool saveScenario();
245 
246  virtual bool canRewind() const;
247 
250  void setValidateForVrfObjects(bool b)
251  {
252  myValidateForVrfObjects = b;
253  }
254 
255  bool validateForVrfObjects() const
256  {
257  return myValidateForVrfObjects;
258  }
259 
260  void setScenarioDirty(bool b)
261  {
262  myScenarioDirty = b;
263  }
264 
265  bool scenarioDirty() const
266  {
267  return myScenarioDirty;
268  }
269 
270  const DtScenario* scenario() const
271  {
272  return myScenario;
273  }
274 
275  void setAskSaveIfScenarioModified(bool b)
276  {
277  myAskSaveIfScenarioModified = b;
278  }
279 
280  bool askSaveIfScenarioModified() const
281  {
282  return myAskSaveIfScenarioModified;
283  }
284 
285  bool joinedToSession() const
286  {
287  return myJoinedToSession;
288  }
289 
290  void setDisplayExistingGdbWarningMessages(bool b)
291  {
292  myDisplayExistingGdbWarningMessage = b;
293  }
294 
295  bool displatExistingGdbWarningMessages() const
296  {
297  return myDisplayExistingGdbWarningMessage;
298  }
299 
300  virtual void setCorrelated(bool);
301 
302  bool correlated() const
303  {
304  return myCorrelated;
305  }
306 
307  DtMenu* createMenu()
308  {
309  return myMenu;
310  }
311 
312  bool initialized() const
313  {
314  return myInitialized;
315  }
316 
317  const DtDeadReckoningSettings& deadReckoningSettings() const
318  {
319  return myDeadReckoningSettings;
320  }
321 
322  void setAllowEditingOnScenarioJoin(bool b)
323  {
324  myAllowEditingOnScenarioJoin = b;
325  }
326 
327  bool allowEditingOnScenarioJoint() const
328  {
329  return myAllowEditingOnScenarioJoin;
330  }
331 
332  virtual std::string currentlyLoadedTerrain() const;
333 
334  virtual void processJoinSession(bool startupMessage = false);
335 
336  virtual void setFromRecord(const DtVrfSessionSettingsRecord& rec);
337  virtual void setFromRecord(const DtVrfScriptedTaskSettingsRecord& rec);
338  virtual void loadDefaultSessionSettings(bool loadOnlyFactorySettings = false);
339  virtual void loadDefaultScriptedTaskSettings(bool loadOnlyFactorySettings = false);
340  virtual void saveSessionSettingsAsDefaults();
341  virtual void saveScriptedTaskSettingsAsDefaults();
342  virtual void getRecord(DtVrfSessionSettingsRecord& rec) const;
343  virtual void getRecord(DtVrfScriptedTaskSettingsRecord& rec) const;
344 
347  virtual bool autoJoinSession() const;
348  virtual bool askToJoin() const;
349  virtual bool alwaysJoinWithSessionDatabase() const;
350  virtual bool alwaysJoinWithOpenDatabase() const;
351  virtual bool displaySessionDialogs() const;
352  virtual bool displayCorrelationWarningMessages() const;
353 
355  virtual void setFavorite(const DtEntityMapperKey&, bool f);
356 
358  {
359  return mySessionSettingsBackup;
360  }
361 
362  makVrv::DtRecordSettingsBackupInterface* scriptedTaskSettingsBackup()
363  {
364  return myScriptedTaskSettingsBackup;
365  }
366 
368  void exportSessionSettings(const std::string& fileName);
369 
371  void importSessionSettings(const std::string& fileName);
372 
374  void exportScriptedTaskSettings(const std::string& fileName);
375 
377  void importScriptedTaskSettings(const std::string& fileName);
378 
380  virtual void setDoNotShowSessionStartupDialog(bool);
381  bool showSessionStartupDialog() const;
382 
384  virtual void setStartupPreference(int);
385  int startupPreference() const;
386 
389  virtual void setAggregateOnCreate(bool);
390  bool aggregateOnCreate() const;
391 
393  virtual void setUserDefinedSmoothing(bool);
394  bool userDefinedSmoothing() const;
395 
397  virtual void setWindowTitle(const QString&);
398 
400  virtual void setShowSessionStatusDialogs(SessionStatusDialogs);
401  SessionStatusDialogs showSessionStatusDialogs() const
402  {
403  return myShowSessionStatusDialogs;
404  }
405 
407  virtual void setDenySystemScriptEditing(bool);
408  virtual bool denySystemScriptEditing() const;
409 
411  virtual void setIndent(int);
412  virtual int indent() const;
413 
415  virtual void setWarnOnSystemScriptChange(bool);
416  virtual bool warnOnSystemScriptChange() const;
417 
419  virtual void setMonitorScriptedTaskFrameRates(bool);
420  virtual bool monitorScriptedTaskFrameRates() const;
421 
423  virtual void setAutoSave(bool);
424  virtual bool autoSave() const;
425 
427  virtual void setShowScenarioDescriptionMessageBox(bool b, bool save);
428  virtual bool showScenarioDescriptionMessageBox() const;
429 
431  virtual const DtSubMenuConfiguration& initialCreateMenuConfiguration() const;
432  virtual DtSubMenuConfiguration& initialCreateMenuConfiguration();
433 
435  virtual const DtSubMenuConfiguration& initialTaskMenuConfiguration() const;
436  virtual DtSubMenuConfiguration& initialTaskMenuConfiguration();
437 
439  virtual const DtSubMenuConfiguration& initialSetMenuConfiguration() const;
440  virtual DtSubMenuConfiguration& initialSetMenuConfiguration();
441 
444  virtual void addAdditionalSmsFile(const std::string&);
445  virtual void removeAdditionalSmsFile(const std::string&);
446  virtual const std::vector<DtString>& additionalSmsFiles() const;
447  virtual void setAdditionalSmsFiles(const std::vector<DtString>&);
448 
449  public:
450  virtual void slot_onScenarioModified();
451  virtual void slot_allBackendsClosed();
452 
454  virtual void editHostilityMatrix(QWidget* parent);
455 
457  virtual DtHostilityMatrixDialog* createHostilityMatrixDialog(
458  QWidget* p, const Qt::WindowFlags& flags) const;
459 
461  virtual void addRecentScenario(const std::string&);
462 
466  virtual bool askAndSaveScriptsForRewind();
467 
468  public:
469  boost::signal<void ()> signal_setMenuConfigurationLoaded;
470  boost::signal<void ()> signal_taskMenuConfigurationLoaded;
471  boost::signal<void ()> signal_createMenuConfigurationLoaded;
472  boost::signal<void (const std::string&)> signal_scenarioLoadError;
473  boost::signal<void (DtSessionStartupDialog*)> signal_sessionStartupBoxCreated;
474  boost::signal<void (DtHostilityMatrixDialog*)> signal_hostilityMatrixDialogCreated;
475  boost::signal<void (const DtDeadReckoningSettings&)> signal_deadReckoningSettingsChanged;
476  boost::signal<void (const DtScenarioExplorer&)> signal_scenarioLoaded;
477  boost::signal<void (bool)> signal_sessionStatusChanged;
478  boost::signal<void ()> signal_allBackendsClosed;
479  boost::signal<void ()> signal_rewinding;
480 
482  boost::signal<void ()> signal_scenarioJustLoaded;
483 
485  boost::signal<void (const DtScenarioLoadInformation&)> signal_preLoadScenario;
486 
489  boost::signal<void (const DtScenarioLoadInformation&)> signal_postLoadScenario;
490 
494  boost::signal<void (const std::string&)> signal_preLoadBaseTerrain;
495 
498  boost::signal<void (const std::string&)> signal_preLoadTerrain;
499 
501  boost::signal<void (const std::string&)> signal_postLoadTerrain;
502 
504  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadForceFiles;
505 
507  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadForceFiles;
508 
510  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadArtilleryManager;
511 
513  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadArtilleryManager;
514 
516  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadModelSetFiles;
517 
519  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadModelSetFiles;
520 
522  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadCreateMenu;
523 
525  boost::signal<void (const DtScenarioExplorer&, DtMenu*)> signal_postLoadCreateMenu;
526 
528  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadTaskMenu;
529 
531  boost::signal<void (const DtFilename&, DtVrfModelSetManager*)> signal_modelSetLoaded;
532 
534  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadTaskMenu;
535 
537  boost::signal<void (const DtScenarioExplorer&)> signal_preLoadSetMenu;
538 
540  boost::signal<void (const DtScenarioExplorer&)> signal_postLoadSetMenu;
541 
543  boost::signal<void (const DtScenario&)> signal_preLoadOverlayFile;
544 
546  boost::signal<void (const DtScenario&)> signal_postLoadOverlayFile;
547 
549  boost::signal<void (const DtScenarioExplorer&)> signal_createMenuLoaded;
550 
552  boost::signal<void ()> signal_recreateCreateMenu;
553 
555  boost::signal<void ()> signal_recreateTaskMenu;
556 
558  boost::signal<void ()> signal_recreateSetMenu;
559 
561  boost::signal<void (const DtVrfSessionSettingsRecord&)> signal_sessionSettingsChanged;
562 
564  boost::signal<void (const DtVrfScriptedTaskSettingsRecord&)> signal_scriptedTaskSettingsChanged;
565 
567  boost::signal<void (DtVrfGuiRecentScenarios*)> signal_recentScenariosChanged;
568 
570  boost::signal<void (const DtScenario&)> signal_preLoadGuiScenarioSettings;
571 
573  boost::signal<void (const DtScenario&)> signal_postLoadGuiScenarioSettings;
574 
576  boost::signal<void ()> signal_scenarioClosed;
577 
579  boost::signal<void (QString)> signal_windowTitleSet;
580 
581  protected:
583  virtual void cleanupSessionBox();
584 
586  virtual void slot_sessionStartupComplete();
587 
589  virtual void slot_onScenarioLoaded(const DtScenario*);
590 
591  virtual void slot_checkBackendClosed(const DtVrfBackendState&, int);
592  virtual void slot_checkSimulationState(const DtVrfBackendState&, int);
593 
595  virtual bool saveIfDirty();
596  virtual DtJoinSessionDialog* createJoinSessionDialog(QWidget* parent, const Qt::WindowFlags& flags);
597 
598  virtual void connectSignals(bool);
599 
600  virtual void displayCorrelationWarningMessage();
601 
603  virtual void reloadScenario(const std::string& newTerrain);
604 
607  virtual void saveScenario(std::string baseName, std::string newTerrainName);
608 
610  virtual void slot_onScenarioSaved(std::string scenarioName, std::string newTerrain);
611 
613  virtual void slot_onScenarioReloaded(std::string scenarioName);
614 
616  virtual void setup();
617 
619  virtual void showSessionStartupDialog();
620 
622  virtual void sessionStatusBoxClosed();
623 
626  virtual void processServerMessage(DtSimMessage*);
627 
629  virtual void processForcesMessage(DtSimMessage*);
630 
632  virtual void restorePreservedScripts();
633 
634  protected:
635  virtual void loadIndirectFireManager(const DtScenarioExplorer& explorer);
636  virtual void loadForceFiles(const DtScenarioExplorer& explorer);
637  virtual void loadCreateMenu(const DtScenarioExplorer& explorer);
638  virtual bool loadInitialMenuConfiguration(makVrv::DtMenuConfiguration&, const DtFilename&);
639  virtual void loadOverlayFile(const DtScenario&);
640 
641  virtual void loadGuiScenarioSettings(const DtScenario&);
642  virtual void loadModelSetFiles(const DtScenarioExplorer& explorer);
643  virtual bool loadTerrain(const std::string& filePath);
644 
645  virtual DtModelSetEntry* modelSetEntry(const DtEntityMapperKey& key) const;
646  virtual DtMenu* createMenuFromFile(const DtString&) const;
647  virtual bool isModelSet(const DtFilename& filename) const;
648  virtual bool loadModelSet(const DtFilename& filename, DtMenu* m) const;
649 
650  virtual void slot_onSessionUpdated(int flags);
651  virtual void slot_onDuplicateBackendAddress(const DtVrfBackendState&);
652 
653  virtual void slot_backendDiscovered(const DtVrfBackendState&);
654  virtual void slot_settingReceived(const std::string&, const DtVrfBackendState*);
655 
656  virtual bool sessionPrompt(const QString& message);
657 
658  virtual bool openTerrainDatabaseFromUserSelection();
659 
660  virtual bool loadSessionTerrain(const std::string&);
661 
662  virtual bool isSameTerrain(const std::string& terrain1, const std::string& terrain2) const;
663 
664  virtual void slot_terrainModified();
665  virtual void slot_deDestructing();
666 
667  virtual void slot_terrainToBeCleared();
668  virtual void slot_terrainCleared();
669 
670  virtual bool checkWriteGdb(const std::string& gdb);
671 
672  virtual void setupSessionSettings();
673  virtual void setupScriptedTaskSettings();
674 
676  virtual QFileInfo findTerrainFile(const std::string& terrainFile) const;
677 
680  virtual QFileInfo findTerrainFile(const std::string& terrainFile, const std::vector<std::string>& searchPaths,
681  const std::string& extension) const;
682 
684  virtual void slot_scenarioAboutToBeSaved(DtScenario*);
685 
687  virtual void createSessionStatusBox(const QString& title, const QString& message, int statusType);
688 
689  protected:
695  std::vector<DtEntityMapperKey> myControlObjectTypes;
704  std::string myLoadedTerrain;
715 
721  DtSessionStatusBox* mySessionStatusBox;
723 
728 
729  std::vector<DtString> myAdditionalSmsFiles;
730  };
731 
733 }
734 

Document ID: Generated on Tue Jan 29 18:21:16 EST 2013 from SVN revision 123193
Copyright © 2005-2013 VT MÄK Inc. All Rights Reserved (www.mak.com)