![]() |
VR-Forces 4.0.4 Class Documentation
|
00001 /******************************************************************************* 00002 ** Copyright (c) 2000 MAK Technologies, Inc. 00003 ** All rights reserved. 00004 *******************************************************************************/ 00005 /******************************************************************************* 00006 ** $RCSfile: baseWindow.h,v $ $Revision: 1.63 $ $State: Exp $ 00007 *******************************************************************************/ 00008 00011 00012 #ifndef BASEWINDOW_H_ 00013 #define BASEWINDOW_H_ 00014 00016 #include "tmqt/tmMapArea.h" 00017 #include "tmqt/tmRubberBand.h" 00018 #include "archiver/archiver.h" 00019 #include "vrfGuiCore/menuItems.h" 00020 #include "tmqt/tmApplication.h" 00021 00023 #include <QtGui/QMainWindow> 00024 #include <QtCore/QList> 00025 #include <QtCore/QDateTime> 00026 #include <QtCore/QHash> 00027 00028 class DtTMMiniMap; 00029 class DtTMFactory; 00030 class DtFeatureActionManager; 00031 class DtEventController; 00032 class DtMenuWidget; 00033 class DtContextMenu; 00034 class DtStdContextMenu; 00035 class QToolBar; 00036 class DtSymbol; 00037 class QAction; 00038 class DtPopupMenu; 00039 00047 #include "tmqt/tmqtDefines.h" 00048 class DT_DLL_tmqt DtBaseWindow : public QMainWindow 00049 { 00050 Q_OBJECT 00051 00052 public: 00053 DtBaseWindow (QWidget* parent = NULL, const Qt::WindowFlags& flags = 0); 00054 virtual ~DtBaseWindow(); 00055 00060 virtual bool init(const DtTMFactory* f, DtTMMiniMap* m = 0, int mode = DtWindow_NoAction); 00061 00063 virtual bool createMiniMap(const DtTMFactory* f); 00064 00066 virtual bool initMiniMap(const DtTMFactory* f, QDockWidget* parent = 0); 00067 00071 virtual DtTMMapArea* areaMap(unsigned value = 0) const; 00072 00075 virtual DtTMMapArea* activeMap() const; 00076 00077 00080 virtual DtTMRubberBand* rubberBand(unsigned value = 0) const; 00081 00084 virtual DtTMRubberBand* rubberBand(DtTMMapArea*) const; 00085 00087 virtual unsigned numberOfMapAreas(); 00088 00090 virtual DtTMMiniMap* miniMap() const; 00091 00095 virtual void loadDatabaseFile(const QString& f); 00096 00098 virtual bool initMapArea(DtTMMapArea* area, const DtTMFactory* f); 00099 00101 virtual bool initAllMapAreas(const DtTMFactory* f); 00102 00103 00106 virtual void toggleMinimap(bool b); 00107 00109 virtual void closeEvent(QCloseEvent* e); 00110 00111 //------------------ 00113 virtual bool shouldTick(); 00114 00116 virtual void markForUpdate(const DtModelData& data); 00117 virtual void markForUpdate(DtModelDataIter* iter); 00118 00120 virtual void removeFromUpdate(const DtModelData& data); 00121 00123 virtual void markAllForUpdate(); 00124 00126 virtual void removeAllForUpdate(); 00127 00129 virtual void setDisplayFrameRate(int); 00130 00132 virtual int displayFrameRate() const; 00133 00134 //------------------ 00135 00136 virtual DtEventController& eventController(); 00137 virtual const DtEventController& eventController() const; 00138 00139 virtual double elapsedRunTime() const; 00140 virtual double numberOfFrames() const; 00141 00142 virtual DtMenuWidget* menuWidget(); 00143 virtual DtStdContextMenu* contextMenus(); 00144 00149 virtual void setFullScreenMode(bool b); 00150 00153 virtual bool hasViewToolbar(int type) const; 00154 virtual QWidget* toolbarFor(int type); 00155 virtual bool hasViewToolbar(QWidget*) const; 00156 virtual int toolbarMenuId(QWidget*) const; 00157 00159 virtual QTextStream& write(QTextStream& ts); 00160 virtual QTextStream& read(QTextStream& ts); 00161 00164 virtual void initFromAppSettings(); 00165 00168 virtual void clear(); 00169 00172 virtual void symbolMapChanged(); 00173 00175 virtual void setUpdateOnTick(bool b, bool updateMini = false); 00176 00179 virtual void recreateMenu(DtMainMenuType menu); 00180 00182 virtual void activateRubberBand(); 00183 00188 virtual void attachEventController(DtEventController*); 00189 00191 QList<DtEventController*>& attachedEventControllers(); 00192 00194 virtual DtPopupMenu* menuFromAction(QAction*); 00195 00197 virtual DtPopupMenu* menuForType(DtMainMenuType type); 00198 00200 virtual void postProcessOptions(); 00201 00202 bool hasRubberBands() const; 00203 00205 virtual void addToolbarMapping(int id, QWidget* w); 00206 00208 virtual void removeToolbarMapping(int id); 00209 00211 virtual DtTMMapArea* mapContainsData(const DtModelData* data) const; 00212 00214 virtual void bringToFront(); 00215 00217 virtual void clearFrameRates(); 00218 00219 public slots: 00220 virtual void removeAttachedEventController(QObject*); 00221 00224 virtual unsigned createMapArea(const DtTMFactory* f); 00225 00227 virtual void removeMapArea(unsigned ii); 00228 00230 virtual void removeMapArea(DtTMMapArea* area); 00231 00233 virtual void changeActiveMap(DtTMMapArea*); 00234 00237 virtual void changeActiveRubberBand(const DtTMRubberBand*); 00238 00240 virtual void addSymbol(const DtModelData&, bool); 00241 virtual void addSymbol(const DtModelData&, DtSymbol*); 00242 00244 virtual void removeDictionaryEntry(const DtModelKey& key); 00245 00247 virtual void removeSymbol(const DtModelData&, bool); 00248 00250 virtual void modifySymbol(const DtModelData& d, int changedFlags); 00251 00253 virtual void tick(); 00254 00256 virtual void preTick(); 00257 00259 virtual void postTick(); 00260 00265 virtual void toggleToolbar(bool b); 00266 00268 virtual void updateViewMenu(); 00269 00271 virtual void hideAllToolbars(); 00272 virtual void showAllToolbars(); 00273 virtual void displayToolbars(bool hide); 00274 00278 virtual void updateValidActions(); 00279 00282 virtual void processSelectionChanged(const QVector<DtModelKey>&); 00283 00285 virtual void changeSelection(const QVector<DtModelKey>& keys); 00286 00287 virtual void modelDataAdded(const DtModelKey& key); 00288 00291 virtual void setupMenuConnection(DtMainMenuType); 00292 00293 DtFeatureActionManager* featureActionManager() const; 00294 DtFeatureActionManager* backupFeatureActionManager() const; 00295 00297 virtual void revertFeatureActionManager(); 00298 00300 virtual void mergeFeatureActionManager(const DtFeatureActionManager&); 00301 00302 signals: 00303 00305 void menuItemsValidated(); 00306 00308 void changedActiveMap(DtTMMapArea*); 00309 00311 void closing(const DtBaseWindow*); 00312 00314 void mapAreaCreated(DtTMArea*); 00315 void miniMapAreaCreated(DtTMArea*); 00316 00317 void selectionChanged(const QVector<DtModelKey>&); 00318 00319 void menuRecreated(DtMainMenuType); 00320 00321 void modelDataMarkedForUpdated(const DtModelData&); 00322 void modelDataRemovedFromUpdate(const DtModelData&); 00323 00324 void preTickSignal(); 00325 void postTickSignal(); 00326 00327 public: 00328 00330 static DtBaseWindow* create(QWidget* parent, const Qt::WindowFlags& flags); 00331 00332 protected: 00334 virtual void tickEventControllers(); 00335 00336 virtual bool initContextMenus(const DtTMFactory* f); 00337 00340 virtual bool initMenuWidget(const DtTMFactory* f); 00341 00343 virtual bool createFeatureActionManager(const DtTMFactory* f); 00344 00346 virtual void addDefaultShortcutsAndIcons(const DtTMFactory* f); 00347 00349 virtual void createMenuWidget(const DtTMFactory* f); 00350 00353 virtual void initViewMenuToolbarMap(); 00354 00356 virtual bool initMapConnections(DtTMMapArea* area); 00357 00358 virtual bool initMenuConnections(); 00359 00362 virtual bool initFromApplicationtoLatin1(); 00363 00365 virtual Qt::ToolBarArea dockToolbarPosition() const; 00366 virtual Qt::DockWidgetArea dockWidgetPosition() const; 00367 00369 virtual void moveDockWindow(QToolBar*, Qt::ToolBarArea); 00370 virtual void moveDockWindow(QDockWidget*, Qt::DockWidgetArea); 00371 00372 virtual QMenu* createPopupMenu(); 00373 00375 virtual QWidget* centerWidget(QWidget* itemToCenter); 00376 00377 protected: 00378 00379 bool myUsingGlobalMiniMap; 00380 DtTMMiniMap* myMiniMap; 00381 QList<DtTMMapArea*> myMapAreaList; 00382 DtTMMapArea* myActiveMapArea; 00383 DtTMRubberBandList myRubberBandList; 00384 00385 double myElapsedRunTime; 00386 double myNumberOfFrames; 00387 static const int theDefaultDisplayFrameRate; 00388 int myDisplayFrameRate; 00389 QTime myFrameStart; 00390 00391 DtEventController *myEventController; 00392 00393 QHash<int, QWidget*> myViewMenuToolbarMap; 00394 QList<QWidget*> myNormalToolbars; 00395 00396 DtMenuWidget *myMenuWidget; 00397 DtStdContextMenu *myContextMenus; 00398 DtContextMenu *myMiddleClickMenu; 00399 DtContextMenu *myRightClickMenu; 00400 00401 DtArchiver myArchiver; 00402 00403 QRect myOriginalGeometry; 00404 00405 QList<DtEventController*> *myAttachedEventControllers; 00406 int myWindowCreationMode; 00407 DtFeatureActionManager* myFeatureActionManager; 00408 DtFeatureActionManager* myBackupFeatureActionManager; 00409 }; 00410 00411 QTextStream& operator<<(QTextStream& ts, DtBaseWindow& w); 00412 QTextStream& operator>>(QTextStream& ts, DtBaseWindow& w); 00413 00414 inline QList<DtEventController*>& DtBaseWindow::attachedEventControllers() 00415 { 00416 return *myAttachedEventControllers; 00417 } 00418 00419 inline DtStdContextMenu* DtBaseWindow::contextMenus() 00420 { 00421 return myContextMenus; 00422 } 00423 00424 inline bool DtBaseWindow::hasRubberBands() const 00425 { 00426 return (myRubberBandList.count() != 0); 00427 } 00428 00429 inline DtFeatureActionManager* DtBaseWindow::featureActionManager() const 00430 { 00431 return myFeatureActionManager; 00432 } 00433 00434 inline DtFeatureActionManager* DtBaseWindow::backupFeatureActionManager() const 00435 { 00436 return myBackupFeatureActionManager; 00437 } 00438 00439 #endif //BASEWINDOW_H_