VR-Forces 4.1.1 Class Documentation
tmApplication.h
Go to the documentation of this file.
1 /*******************************************************************************
2 ** Copyright (c) 2004 MAK Technologies, Inc.
3 ** All rights reserved.
4 *******************************************************************************/
5 /*******************************************************************************
6 ** $RCSfile: tmApplication.h,v $ $Revision: 1.148 $ $State: Exp $
7 *******************************************************************************/
8 
11 
12 #ifndef TACTICALMAPAPPLICATION_H
13 #define TACTICALMAPAPPLICATION_H
14 
15 #include "tmqt/tmqtDefines.h"
17 #include "tmqt/tmAppOptions.h"
18 
19 #include <geometry/point.h>
20 #include <QtCore/QList>
21 #include <map>
22 #include <string>
23 
24 class QAction;
25 class QTimerEvent;
27 class DtTMFactory;
28 class DtTMMiniMap;
29 class DtModelData;
30 class DtBaseWindow;
31 class DtTMAppOptions;
32 class DtBaseSymbolMapper;
33 class DtPopupMenu;
35 class DtTMMapArea;
36 class DtDrawerColl;
37 class DtTMDisplayOptions;
38 class DtSymbol;
39 class DtViewDriver;
40 class DtEventController;
41 class DtTerrainDatabase;
42 class DtPaperMapDatabase;
45 class DtRecursiveTimer;
47 class QSplashScreen;
48 class QProgressBar;
49 class DtTMPluginManager;
50 class DtTMPlugin;
51 class DtEventSignaller;
53 class DtTMArea;
54 class QDockWidget;
55 class DtArchiver;
56 class DtMsgItem;
58 
59 #include <QtGui/QApplication>
60 #include <QtCore/QDateTime>
61 #include <QtCore/QTextStream>
62 
63 #include "tmqt/eventSignaller.h"
64 
67 
68 const int DtWindow_NoAction = 0;
69 const int DtMenu_Hide = 0x00000001;
70 const int DtMenu_DoNotCreate = 0x00000002;
71 const int DtToolbars_Hide = 0x00000004;
72 const int DtToolbars_DoNotCreate = 0x00000008;
73 
75 {
76  Q_OBJECT
77 
78 public:
79 
80  static DtTMApplication* app();
81 
84 
86  DtTMApplication(int& argc, char** argv);
87 
89  virtual ~DtTMApplication();
90 
93  virtual bool init(DtTMFactory* f, bool bShowSplashScreen = true);
94 
98  virtual void initializeQApplicationObject();
99 
108  virtual DtBaseWindow* createWindow(QWidget* parent, int mode = DtMenu_Hide,
109  const Qt::WindowFlags& flags = 0);
110 
113  virtual QVector<DtModelKey> selectedModelKeys() const;
114 
115 public:
117  virtual const DtTMFactory* factory() const;
118  virtual DtTMFactory* factory();
119 
121  virtual void setFactory(DtTMFactory* f);
122 
124  virtual bool initConnections();
125 
127  virtual DtTMMiniMap* globalMiniMap() const;
128 
130  virtual DtModelDataDict& ModelDataDict();
131 
133  virtual DtModelDataIter* ModelDataIter() const;
134 
136  virtual DtBaseWindow* createNewWindow(QWidget* parent = NULL,
137  int mode = DtWindow_NoAction,
138  const Qt::WindowFlags& f = 0);
139 
141  virtual DtBaseWindow* activeWindow() const;
142 
143  DtTMAppOptions* options() const;
144  DtTMDisplayOptions* displayOptions() const;
145 
146  virtual DtDrawerColl* drawerColl();
147 
148  virtual const QString& filenameInUse();
149  virtual void setFilenameInUse(const QString& filename);
150 
152  virtual DtBaseSymbolMapper* baseSymbolMapper() const;
153 
155  DtArchiver* archiver();
156 
158  virtual DtBaseWindow* mainWindowFromObject(QObject* o, DtBaseWindow* defaultWindow) const;
159 
161  virtual void addWindow(const DtBaseWindow* w);
162 
165  virtual void addManagedArea(DtTMArea*);
166 
168  virtual bool hasWindows() const;
169 
171  virtual DtWindowList* windowList();
172 
175  virtual int fastestFrameRate();
176 
179  virtual bool exec();
180 
185  virtual void startTickTimer(int mSec, bool allowFutureOverride = true);
186  virtual void setAllowTickTimerOverride(bool b);
187  virtual bool allowTickTimerOverride();
188 
191  virtual void adjustTickTimerToMeet(int mSec);
192 
194  virtual int tickTimerRate();
195 
197  virtual void setSuspendTicking(bool b);
198  virtual bool suspendTicking();
199 
201  virtual void setInTick(bool b);
202 
206  virtual DtModelData* dataWithName(const QString& name, const QVector<int>* except = NULL);
207 
209  virtual DtModelData* findLocalDataFor(const DtModelKey& key);
210 
212  virtual const DtModelKey* findLocalModelKey(DtSymbol* s);
213 
215  virtual DtModelData* findModelData(DtSymbol* s);
216 
218  virtual DtViewDriver* viewDriverFor(DtSymbol* s);
219 
221  virtual DtViewDriver* viewDriverFor(const DtModelKey& key);
222 
225  virtual DtPopupMenu* menuFromAction(QAction*);
226 
228  virtual void markForUpdate(DtModelDataIter* iter);
229 
232  virtual void modelDataChanged(const DtModelData& data, int iChangedFlags);
233 
237  virtual DtModelData* checkForDuplicateName(const DtModelData* checker, QString name, const QVector<int>* except = NULL);
238 
240  virtual void setDuplicateNameCheck(bool b);
241  virtual bool duplicateNameCheck() const;
242 
245  virtual DtEventSignaller* eventSignaller();
246 
248  virtual DtEventController& eventController();
249  virtual const DtEventController& eventController() const;
250 
253  virtual const DtTerrainDatabase* terrainDatabase() const;
254  virtual DtTerrainDatabase* terrainDatabase();
255 
256  virtual const DtPaperMapDatabase* paperMapDatabase() const;
257  virtual DtPaperMapDatabase* paperMapDatabase();
258 
260  virtual bool fullScreenMode() const;
261 
263  virtual bool isConcave(QVector<DtPoint>* pointList);
264 
266  virtual void addSymbol(const DtModelData&, bool force = true);
267  virtual void addSymbol(const DtModelData&, DtSymbol*);
268 
271  virtual void removeSymbol(const DtModelData&, bool removeFromDict = false);
272 
275  virtual void clear();
276 
278  virtual void symbolMapChanged();
279 
282  virtual bool needsTerrainDatabase() const;
283 
285  virtual bool terrainLoaded() const;
286  virtual DtCoordinateSystemCollection* coordinateSystemCollection() const;
287  virtual DtUnitDisplayManager* unitDisplayManager() const;
288  virtual DtUnitConverterFactory* unitConverterFactory() const;
289 
292  virtual bool allowTerrainProfileTracking() const;
293 
295  virtual void setUpdateOnTick(bool b, bool updateMini = false);
296 
298  virtual void setPrintMode(bool b);
299  virtual bool printMode() const;
300 
303  virtual QString dataFolder();
304 
307  virtual QString makeRelativeTo(QString filename, QString path);
308 
310  virtual QString relativePath();
311 
312  int settingsVersion() const;
313 
314  virtual QString appName() const;
315  virtual QString appVersion() const;
316  virtual QString pluginVersion() const;
317  virtual QString buildDate() const;
318 
320  virtual DtString pluginName() const;
321 
323  virtual void setSplashScreenMessage(const QString&);
324 
326  virtual bool startSplashScreenProgress(const QString& title, int iTotalSteps);
327  virtual void updateSplashScreenProgress(int);
328  virtual void endSplashScreenProgress();
329 
331  virtual bool splashScreenIsActive() const;
332 
334  bool applicationInitialized() const;
335 
339  virtual void attachEventController(DtEventController*);
340 
342  QList<DtEventController*>& attachedEventControllers();
343 
344  virtual void tickEventControllers();
345  virtual void clearCurrentEvents();
346 
348  virtual void setSplashScreenImage(const QString&);
349 
351  virtual DtTMMapArea* mapContainsData(const DtModelData* data) const;
352 
354  virtual bool eventFilter(QObject *o, QEvent* e);
355  virtual bool event(QEvent* e);
356 
358  virtual QString resolveFile(const QString&) const;
359 
360  virtual DtTMPluginManager* pluginManager() const;
361 
363  virtual void mergeFeatureActionManager(const DtFeatureActionManager&);
364 
366  virtual void mergeToolbarManager(const DtToolbarFactoryManager&);
367 
369  virtual void revertToolbars();
370 
371 public:
381  virtual DtEnvironmentalModelData* createObject(const QString& object, QVector<DtPoint>& points,
382  const QString& name = QString::null);
383 
384 public:
386  virtual bool canPaste() const;
387  virtual void setPasteData(const QByteArray&);
388  virtual void clearPasteData();
389  const QByteArray& pasteData() const;
390 
391 #ifdef WIN32
392  virtual void startPerformanceCounter(const std::string&);
393  virtual void endPerformanceCounter(const std::string&);
394  virtual void outputPerformanceCounters();
395  bool markTime() const;
396 #endif
397 
398 public:
399  static DtTMApplication* create(int argc, char** argv);
400 
401 signals:
402 
404  void filenameInUseChanged(const QString& s);
405  void symbolMapChangedSignal();
406  void pluginLoaded(const DtTMPlugin*);
407  void pasteAvailable();
408  void pasteUnavailable();
409 
410 public slots:
411  virtual void removeAttachedEventController(QObject*);
412 
414 
415  virtual DtBaseWindow* fileNewWindow(bool show = true);
416 
417  virtual void fileExit();
418 
420  virtual void removeWindow(const DtBaseWindow* w);
421  virtual void windowDestroyed(QObject* w);
422 
424  virtual void modelDataAdded(const DtModelKey& key);
425 
427  virtual void modelDataRemoved(const DtModelKey& key);
428 
431  virtual void setDisplayFrameRate(int iFramesPerSecond);
432 
434  virtual int displayFrameRate() const;
435 
437  virtual void tick();
438  virtual void tickInternal();
439 
445  virtual void setFullScreenMode(bool b);
446 
448  virtual void saveSettingsFile();
449  virtual void saveSettings(QTextStream& stream);
450 
452  virtual void readSettingsFile(DtBaseWindow* w, bool windowOnly = false);
453  virtual void readSettings(DtBaseWindow* w, QTextStream& stream, bool windowOnly = false);
454 
455  virtual void splashScreenDestroyed();
456 
458  virtual void removeManagedArea(QObject*);
459 
461  virtual void removeFromUpdate(const DtModelData& data);
462 
463  virtual void markForUpdate(const DtModelData&);
464  virtual void markForUpdate(const DtModelKey&);
465 
467  virtual void showSplashScreen();
468 
470  virtual void closeSplashScreen();
471  virtual void showSplashScreen(bool show);
472 
473  virtual void processMsgItem(const DtMsgItem& item);
474 
476  virtual bool shouldTick();
477 
479  static void addUserDataFor(const DtEntityMapperKey&, DtArchivableObjectCreator);
480  static void removeUserDataFor(const DtEntityMapperKey&);
481 
482 public slots:
483  virtual void addToUpdate(const DtModelData& data);
484  virtual void addToRemoval(const DtModelData& data);
485 
486 protected:
487  virtual void postAppInit();
488 
490  virtual DtTMPluginManager* createPluginManager(DtTMFactory*);
491  virtual void initPlugins(DtTMFactory* f);
492  virtual bool readOptions(DtTMFactory* f);
493 
496  virtual bool setupOptions();
497 
498  virtual bool processOptions(DtTMFactory* f);
499 
501  virtual bool initGlobalMiniMap();
502 
505  virtual bool initUnitConverterFactory(DtTMFactory* f);
506 
508  virtual bool initUnitDisplayManager(DtTMFactory* f);
509 
511  virtual bool initMenuSystem();
512 
515  virtual void setupApplicationFromSettings();
516 
517  virtual bool setupFromOptions();
518 
520  virtual bool setupMapReaders();
521 
522  virtual bool initSymbolMapper(DtTMFactory* f);
523 
524  virtual void setupWindowFromSettings(DtBaseWindow* w, bool show);
525 
528  virtual bool createCoordinateSystemCollection(const DtTMFactory* f);
529 
534  virtual bool shouldClear(const DtModelData* data);
535 
536  virtual void initGlobalMiniMapConnections();
537 
539  virtual const QString& splashScreenImage() const;
540 
542  virtual DtTMPlugin* loadPlugin(const QString&);
543 
547  virtual void applicationReady();
548 
550  virtual bool loadTranslationFiles(const QString& lang);
551 
552  virtual bool loadSymbolMapFilesAtStartup() const;
553 
556  virtual DtString initialLogFile() const;
557  virtual bool useConsole() const;
558 
561  virtual void setEnableGuiPrinter(bool enable, int level);
562 
563  virtual void timerEvent(QTimerEvent *e);
564 
565  virtual void initUserData();
566 
568  virtual void addUserDataFor(DtEnvironmentalModelData*);
569 
570  virtual void setupLanguage();
571 
572 protected:
573 
575 
577 
578  //The global minimap
580 
582 
586 
588 
589  int myArgc;
590  char** myArgv;
591 
593 
596 
599  bool myInTick;
600 
603 
606 
609 
614 
617 
622 
625 
626  QSplashScreen* mySplashScreen;
627  QProgressBar* mySplashProgress;
628 
630 
635 
641 
642  QHash<DtModelKey, DtModelData*> myUpdateData;
643  QHash<DtModelKey, DtModelData*> myRemoveData;
644 
648 
649  QByteArray myPasteBuffer;
650 
652  std::map<std::string, double> myTickTimes;
653 
656 
657 #ifdef WIN32
658  std::map<std::string, __int64> myPerformanceCounters;
659 #endif
660 
662 
664 
665  static QHash<QString, DtArchivableObjectCreator> theUserData;
666 };
667 
669 {
670  return &myEventSignaller;
671 }
672 
674 {
676 }
677 
679 {
680  return mySettingsVersion;
681 }
682 
684 {
686 }
687 
688 inline bool DtTMApplication::canPaste() const
689 {
690  return (myPasteBuffer.length() != 0);
691 }
692 
693 inline const QByteArray& DtTMApplication::pasteData() const
694 {
695  return myPasteBuffer;
696 }
697 
698 #ifdef WIN32
699 inline bool DtTMApplication::markTime() const
700 {
701  return myMarkTime;
702 }
703 #endif
704 
706 {
707  return myOptions;
708 }
709 
711 {
712  return myOptions->displayOptions();
713 }
714 
716 {
717  return myArchiver;
718 }
719 
720 #endif
721 

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)