VR-Forces 4.0.4 Class Documentation
include/tmqt/tmApplication.h
Go to the documentation of this file.
00001 /*******************************************************************************
00002 ** Copyright (c) 2004 MAK Technologies, Inc.
00003 ** All rights reserved.
00004 *******************************************************************************/
00005 /*******************************************************************************
00006 ** $RCSfile: tmApplication.h,v $ $Revision: 1.148 $ $State: Exp $
00007 *******************************************************************************/
00008 
00011 
00012 #ifndef TACTICALMAPAPPLICATION_H
00013 #define TACTICALMAPAPPLICATION_H
00014 
00015 #include "tmqt/tmqtDefines.h"
00016 #include "symbolMapper/modelDataDict.h"
00017 #include "tmqt/tmAppOptions.h"
00018 
00019 #include <geometry/point.h>
00020 #include <QtCore/QList>
00021 #include <map>
00022 #include <string>
00023 
00024 class QAction;
00025 class QTimerEvent;
00026 class DtFeatureActionManager;
00027 class DtTMFactory;
00028 class DtTMMiniMap;
00029 class DtModelData;
00030 class DtBaseWindow;
00031 class DtTMAppOptions;
00032 class DtBaseSymbolMapper;
00033 class DtPopupMenu;
00034 class DtToolbarFactoryManager;
00035 class DtTMMapArea;
00036 class DtDrawerColl;
00037 class DtTMDisplayOptions;
00038 class DtSymbol;
00039 class DtViewDriver;
00040 class DtEventController;
00041 class DtTerrainDatabase;
00042 class DtPaperMapDatabase;
00043 class DtUnitDisplayManager;
00044 class DtUnitConverterFactory;
00045 class DtRecursiveTimer;
00046 class DtCoordinateSystemCollection;
00047 class QSplashScreen;
00048 class QProgressBar;
00049 class DtTMPluginManager;
00050 class DtTMPlugin;
00051 class DtEventSignaller;
00052 class DtEnvironmentalModelData;
00053 class DtTMArea;
00054 class QDockWidget;
00055 class DtArchiver;
00056 class DtMsgItem;
00057 class DtMsgGuiPrinter;
00058 
00059 #include <QtGui/QApplication>
00060 #include <QtCore/QDateTime>
00061 #include <QtCore/QTextStream>
00062 
00063 #include "tmqt/eventSignaller.h"
00064 
00065 typedef QList<DtBaseWindow*> DtWindowList;
00066 typedef QList<DtTMArea*> DtAreaList;
00067 
00068 const int DtWindow_NoAction       = 0;
00069 const int DtMenu_Hide             = 0x00000001;
00070 const int DtMenu_DoNotCreate      = 0x00000002;
00071 const int DtToolbars_Hide         = 0x00000004;
00072 const int DtToolbars_DoNotCreate  = 0x00000008;
00073 
00074 class DT_DLL_tmqt DtTMApplication : public QObject
00075 {   
00076    Q_OBJECT
00077 
00078 public:
00079    
00080    static DtTMApplication* app();
00081    
00083    DtTMApplication();
00084    
00086    DtTMApplication(int& argc, char** argv);
00087    
00089    virtual ~DtTMApplication();
00090    
00093    virtual bool init(DtTMFactory* f, bool bShowSplashScreen = true);
00094 
00098    virtual void initializeQApplicationObject();
00099 
00108    virtual DtBaseWindow* createWindow(QWidget* parent, int mode = DtMenu_Hide,
00109       const Qt::WindowFlags& flags = 0);
00110 
00113    virtual QVector<DtModelKey> selectedModelKeys() const;
00114 
00115 public:
00117    virtual const DtTMFactory* factory() const;
00118    virtual DtTMFactory* factory();
00119    
00121    virtual void setFactory(DtTMFactory* f);
00122    
00124    virtual bool initConnections();
00125 
00127    virtual DtTMMiniMap* globalMiniMap() const;
00128    
00130    virtual DtModelDataDict& ModelDataDict();
00131    
00133    virtual DtModelDataIter* ModelDataIter() const;
00134    
00136    virtual DtBaseWindow* createNewWindow(QWidget* parent = NULL,
00137       int mode = DtWindow_NoAction, 
00138       const Qt::WindowFlags& f = 0);
00139    
00141    virtual DtBaseWindow* activeWindow() const;
00142    
00143    DtTMAppOptions* options() const; 
00144    DtTMDisplayOptions* displayOptions() const;
00145    
00146    virtual DtDrawerColl* drawerColl();
00147    
00148    virtual const QString& filenameInUse();
00149    virtual void setFilenameInUse(const QString& filename);
00150    
00152    virtual DtBaseSymbolMapper* baseSymbolMapper() const;
00153 
00155    DtArchiver* archiver();
00156 
00158    virtual DtBaseWindow* mainWindowFromObject(QObject* o, DtBaseWindow* defaultWindow) const;
00159 
00161    virtual void addWindow(const DtBaseWindow* w);
00162    
00165    virtual void addManagedArea(DtTMArea*);
00166 
00168    virtual bool hasWindows() const;
00169 
00171    virtual DtWindowList* windowList();
00172    
00175    virtual int fastestFrameRate();
00176    
00179    virtual bool exec();
00180    
00185    virtual void startTickTimer(int mSec, bool allowFutureOverride = true);
00186    virtual void setAllowTickTimerOverride(bool b);
00187    virtual bool allowTickTimerOverride();
00188    
00191    virtual void adjustTickTimerToMeet(int mSec);
00192    
00194    virtual int tickTimerRate();
00195    
00197    virtual void setSuspendTicking(bool b);
00198    virtual bool suspendTicking();
00199    
00201    virtual void setInTick(bool b);
00202    
00206    virtual DtModelData* dataWithName(const QString& name, const QVector<int>* except = NULL);
00207 
00209    virtual DtModelData* findLocalDataFor(const DtModelKey& key);
00210    
00212    virtual const DtModelKey* findLocalModelKey(DtSymbol* s);
00213    
00215    virtual DtModelData* findModelData(DtSymbol* s);
00216    
00218    virtual DtViewDriver* viewDriverFor(DtSymbol* s);
00219    
00221    virtual DtViewDriver* viewDriverFor(const DtModelKey& key);
00222    
00225    virtual DtPopupMenu* menuFromAction(QAction*);
00226 
00228    virtual void markForUpdate(DtModelDataIter* iter);
00229    
00232    virtual void modelDataChanged(const DtModelData& data, int iChangedFlags);
00233    
00237    virtual DtModelData* checkForDuplicateName(const DtModelData* checker, QString name, const QVector<int>* except = NULL);
00238    
00240    virtual void setDuplicateNameCheck(bool b);
00241    virtual bool duplicateNameCheck() const;
00242 
00245    virtual DtEventSignaller* eventSignaller();
00246 
00248    virtual DtEventController& eventController();
00249    virtual const DtEventController& eventController() const;
00250    
00253    virtual const DtTerrainDatabase* terrainDatabase() const;
00254    virtual DtTerrainDatabase* terrainDatabase();
00255 
00256    virtual const DtPaperMapDatabase* paperMapDatabase() const;
00257    virtual DtPaperMapDatabase* paperMapDatabase();
00258    
00260    virtual bool fullScreenMode() const;
00261    
00263    virtual bool isConcave(QVector<DtPoint>* pointList);
00264 
00266    virtual void addSymbol(const DtModelData&, bool force = true);
00267    virtual void addSymbol(const DtModelData&, DtSymbol*);
00268 
00271    virtual void removeSymbol(const DtModelData&, bool removeFromDict = false);
00272 
00275    virtual void clear();
00276 
00278    virtual void symbolMapChanged();
00279 
00282    virtual bool needsTerrainDatabase() const;
00283 
00285    virtual bool terrainLoaded() const;
00286    virtual DtCoordinateSystemCollection* coordinateSystemCollection() const;
00287    virtual DtUnitDisplayManager* unitDisplayManager() const;
00288    virtual DtUnitConverterFactory* unitConverterFactory() const;
00289 
00292    virtual bool allowTerrainProfileTracking() const;
00293 
00295    virtual void setUpdateOnTick(bool b, bool updateMini = false);
00296 
00298    virtual void setPrintMode(bool b);
00299    virtual bool printMode() const;
00300 
00303    virtual QString dataFolder();
00304 
00307    virtual QString makeRelativeTo(QString filename, QString path);
00308 
00310    virtual QString relativePath();
00311    
00312    int settingsVersion() const;
00313 
00314    virtual QString appName() const;
00315    virtual QString appVersion() const;
00316    virtual QString pluginVersion() const;
00317    virtual QString buildDate() const;
00318 
00320    virtual DtString pluginName() const;
00321 
00323    virtual void setSplashScreenMessage(const QString&);
00324 
00326    virtual bool startSplashScreenProgress(const QString& title, int iTotalSteps);
00327    virtual void updateSplashScreenProgress(int);
00328    virtual void endSplashScreenProgress();
00329 
00331    virtual bool splashScreenIsActive() const;
00332 
00334    bool applicationInitialized() const;
00335 
00339    virtual void attachEventController(DtEventController*);
00340 
00342    QList<DtEventController*>& attachedEventControllers();
00343 
00344    virtual void tickEventControllers();
00345    virtual void clearCurrentEvents();
00346 
00348    virtual void setSplashScreenImage(const QString&);
00349 
00351    virtual DtTMMapArea* mapContainsData(const DtModelData* data) const;
00352 
00354    virtual bool eventFilter(QObject *o, QEvent* e);
00355    virtual bool event(QEvent* e);
00356 
00358    virtual QString resolveFile(const QString&) const;
00359 
00360    virtual DtTMPluginManager* pluginManager() const;
00361 
00363    virtual void mergeFeatureActionManager(const DtFeatureActionManager&);
00364 
00366    virtual void mergeToolbarManager(const DtToolbarFactoryManager&);
00367    
00369    virtual void revertToolbars();
00370 
00371 public:
00381    virtual DtEnvironmentalModelData* createObject(const QString& object, QVector<DtPoint>& points,
00382       const QString& name = QString::null);
00383 
00384 public:
00386    virtual bool canPaste() const;
00387    virtual void setPasteData(const QByteArray&);
00388    virtual void clearPasteData();
00389    const QByteArray& pasteData() const;
00390 
00391 #ifdef WIN32
00392    virtual void startPerformanceCounter(const std::string&);
00393    virtual void endPerformanceCounter(const std::string&);
00394    virtual void outputPerformanceCounters();
00395    bool markTime() const;
00396 #endif
00397 
00398 public:
00399    static DtTMApplication* create(int argc, char** argv);
00400 
00401 signals:
00402    
00404    void filenameInUseChanged(const QString& s);
00405    void symbolMapChangedSignal();
00406    void pluginLoaded(const DtTMPlugin*);
00407    void pasteAvailable();
00408    void pasteUnavailable();
00409 
00410 public slots:
00411    virtual void removeAttachedEventController(QObject*);
00412    
00414    
00415    virtual DtBaseWindow* fileNewWindow(bool show = true);
00416    
00417    virtual void fileExit();
00418    
00420    virtual void removeWindow(const DtBaseWindow* w);
00421    virtual void windowDestroyed(QObject* w);
00422    
00424    virtual void modelDataAdded(const DtModelKey& key);
00425    
00427    virtual void modelDataRemoved(const DtModelKey& key);
00428    
00431    virtual void setDisplayFrameRate(int iFramesPerSecond);
00432    
00434    virtual int displayFrameRate() const;
00435    
00437    virtual void tick();
00438    virtual void tickInternal();
00439    
00445    virtual void setFullScreenMode(bool b);
00446    
00448    virtual void saveSettingsFile();
00449    virtual void saveSettings(QTextStream& stream);
00450 
00452    virtual void readSettingsFile(DtBaseWindow* w, bool windowOnly = false);
00453    virtual void readSettings(DtBaseWindow* w, QTextStream& stream, bool windowOnly = false);
00454 
00455    virtual void splashScreenDestroyed();
00456 
00458    virtual void removeManagedArea(QObject*);
00459 
00461    virtual void removeFromUpdate(const DtModelData& data);
00462 
00463    virtual void markForUpdate(const DtModelData&);
00464    virtual void markForUpdate(const DtModelKey&);
00465 
00467    virtual void showSplashScreen();
00468 
00470    virtual void closeSplashScreen();
00471    virtual void showSplashScreen(bool show);
00472 
00473    virtual void processMsgItem(const DtMsgItem& item);
00474 
00476    virtual bool shouldTick();
00477 
00479    static void addUserDataFor(const DtEntityMapperKey&, DtArchivableObjectCreator);
00480    static void removeUserDataFor(const DtEntityMapperKey&);
00481    
00482 public slots:
00483    virtual void addToUpdate(const DtModelData& data);
00484    virtual void addToRemoval(const DtModelData& data);
00485 
00486 protected:
00487    virtual void postAppInit();
00488 
00490    virtual DtTMPluginManager* createPluginManager(DtTMFactory*);
00491    virtual void initPlugins(DtTMFactory* f);
00492    virtual bool readOptions(DtTMFactory* f);
00493 
00496    virtual bool setupOptions();
00497 
00498    virtual bool processOptions(DtTMFactory* f);
00499    
00501    virtual bool initGlobalMiniMap();
00502    
00505    virtual bool initUnitConverterFactory(DtTMFactory* f);
00506 
00508    virtual bool initUnitDisplayManager(DtTMFactory* f);
00509 
00511    virtual bool initMenuSystem();
00512    
00515    virtual void setupApplicationFromSettings();
00516 
00517    virtual bool setupFromOptions();
00518 
00520    virtual bool setupMapReaders();
00521 
00522    virtual bool initSymbolMapper(DtTMFactory* f);
00523 
00524    virtual void setupWindowFromSettings(DtBaseWindow* w, bool show);
00525 
00528    virtual bool createCoordinateSystemCollection(const DtTMFactory* f);
00529 
00534    virtual bool shouldClear(const DtModelData* data);
00535 
00536    virtual void initGlobalMiniMapConnections();
00537 
00539    virtual const QString& splashScreenImage() const;
00540 
00542    virtual DtTMPlugin* loadPlugin(const QString&);
00543 
00547    virtual void applicationReady();
00548 
00550    virtual bool loadTranslationFiles(const QString& lang);
00551 
00552    virtual bool loadSymbolMapFilesAtStartup() const;
00553 
00556    virtual DtString initialLogFile() const;
00557    virtual bool useConsole() const;
00558 
00561    virtual void setEnableGuiPrinter(bool enable, int level);
00562 
00563    virtual void timerEvent(QTimerEvent *e);
00564 
00565    virtual void initUserData();
00566 
00568    virtual void addUserDataFor(DtEnvironmentalModelData*);
00569 
00570    virtual void setupLanguage();
00571 
00572 protected:
00573    
00574    static DtTMApplication* theApplication;
00575    
00576    DtTMFactory* myFactory;
00577    
00578    //The global minimap
00579    DtTMMiniMap* myTMGlobalMiniMap;
00580    
00581    DtBaseSymbolMapper* myMapper;
00582 
00584    DtModelDataDict* myModelDataDict;
00585    DtModelDataIter* myModelDataIter;
00586    
00587    DtTMAppOptions* myOptions;
00588    
00589    int myArgc;
00590    char** myArgv;
00591    
00592    QString myFilenameInUse;
00593    
00594    DtWindowList   myWindows;
00595    DtAreaList    *myManagedAreas;
00596    
00598    bool mySuspendTicking;
00599    bool myInTick;
00600    
00601    int myTickTimerRate;
00602    bool myAllowTickTimerOverride;
00603    
00605    bool myDuplicateNameCheck;
00606 
00608    DtEventController* myEventController;
00609    
00610    bool myFullScreenMode;
00611    bool myLoadedSettings;
00612    bool myPrintMode;
00613    DtArchiver* myArchiver;
00614 
00615    DtDrawerColl* myDrawerColl;
00616    DtCoordinateSystemCollection* myCoordinateSystemCollection;
00617 
00621    QList<QObject*> myInactiveWindows;
00622 
00623    int mySettingsVersion;
00624    int myTimerId;
00625 
00626    QSplashScreen* mySplashScreen;
00627    QProgressBar*  mySplashProgress;
00628 
00629    DtTMPluginManager* myPluginManager;
00630 
00634    DtEventSignaller   myEventSignaller;
00635 
00636    QString        mySplashScreenMessage;
00637    QString        mySplashScreenImage;
00638    bool           myApplicationInitialized;
00639    bool           myNeedsPostAppInit;
00640    QList<DtEventController*>*   myAttachedEventControllers;
00641 
00642    QHash<DtModelKey, DtModelData*> myUpdateData;
00643    QHash<DtModelKey, DtModelData*> myRemoveData;
00644 
00645    bool           myResetPruneStatus;
00646    bool           myStashPrune;
00647    bool           myMarkTime;
00648 
00649    QByteArray        myPasteBuffer;
00650 
00651    int               myTickCount;
00652    std::map<std::string, double> myTickTimes;
00653 
00654    DtUnitConverterFactory* myUnitConverterFactory;
00655    DtUnitDisplayManager* myUnitDisplayManager;
00656 
00657 #ifdef WIN32
00658    std::map<std::string, __int64> myPerformanceCounters;
00659 #endif
00660   
00661    DtMsgGuiPrinter* myGuiPrinter;
00662 
00663    DtRecursiveTimer* myRecursiveTimer;
00664 
00665    static QHash<QString, DtArchivableObjectCreator> theUserData;
00666 };
00667 
00668 inline DtEventSignaller* DtTMApplication::eventSignaller()
00669 {
00670    return &myEventSignaller;
00671 }
00672 
00673 inline QList<DtEventController*>& DtTMApplication::attachedEventControllers()
00674 {
00675    return *myAttachedEventControllers;
00676 }
00677 
00678 inline int DtTMApplication::settingsVersion() const
00679 {
00680    return mySettingsVersion;
00681 }
00682 
00683 inline bool DtTMApplication::applicationInitialized() const
00684 {
00685    return myApplicationInitialized;
00686 }
00687 
00688 inline bool DtTMApplication::canPaste() const
00689 {
00690    return (myPasteBuffer.length() != 0);
00691 }
00692 
00693 inline const QByteArray& DtTMApplication::pasteData() const
00694 {
00695    return myPasteBuffer;
00696 }
00697 
00698 #ifdef WIN32
00699 inline bool DtTMApplication::markTime() const
00700 {
00701    return myMarkTime;
00702 }
00703 #endif
00704 
00705 inline DtTMAppOptions* DtTMApplication::options() const
00706 {
00707    return myOptions;
00708 }
00709 
00710 inline DtTMDisplayOptions* DtTMApplication::displayOptions() const
00711 {
00712    return myOptions->displayOptions();
00713 }
00714 
00715 inline DtArchiver* DtTMApplication::archiver()
00716 {
00717    return myArchiver;
00718 }
00719 
00720 #endif
00721 

Document ID: Generated on Fri Jun 29 16:33:32 EDT 2012 from SVN revision 116588
Copyright © 2005-2012 VT MÄK Inc. All Rights Reserved (www.mak.com)