|
Quantum GIS API Documentation
master-ce49b66
|
00001 /*************************************************************************** 00002 qgisinterface.h 00003 Interface class for exposing functions in QgisApp for use by plugins 00004 ------------------- 00005 begin : 2004-02-11 00006 copyright : (C) 2004 by Gary E.Sherman 00007 email : sherman at mrcc.com 00008 ***************************************************************************/ 00009 00010 /*************************************************************************** 00011 * * 00012 * This program is free software; you can redistribute it and/or modify * 00013 * it under the terms of the GNU General Public License as published by * 00014 * the Free Software Foundation; either version 2 of the License, or * 00015 * (at your option) any later version. * 00016 * * 00017 ***************************************************************************/ 00018 #ifndef QGISINTERFACE_H 00019 #define QGISINTERFACE_H 00020 00021 class QAction; 00022 class QMenu; 00023 class QToolBar; 00024 class QDockWidget; 00025 class QMainWindow; 00026 class QWidget; 00027 00028 class QgsComposerView; 00029 class QgsMapLayer; 00030 class QgsMapCanvas; 00031 class QgsRasterLayer; 00032 class QgsVectorLayer; 00033 class QgsLegendInterface; 00034 class QgsFeature; 00035 class QgsMessageBar; 00036 00037 #include <QObject> 00038 #include <QFont> 00039 #include <QPair> 00040 #include <map> 00041 00042 #include <qgis.h> 00043 00044 #ifdef _MSC_VER 00045 # pragma warning( push ) 00046 # pragma warning( disable: 4996 ) // was declared deprecated 00047 #endif 00048 00061 class GUI_EXPORT QgisInterface : public QObject 00062 { 00063 Q_OBJECT 00064 00065 public: 00066 00068 QgisInterface(); 00069 00071 virtual ~QgisInterface(); 00072 00076 virtual QgsLegendInterface* legendInterface() = 0; 00077 00078 public slots: // TODO: do these functions really need to be slots? 00079 00080 /* Exposed functions */ 00081 00083 virtual void zoomFull() = 0; 00084 00086 virtual void zoomToPrevious() = 0; 00087 00089 virtual void zoomToNext() = 0; 00090 00092 virtual void zoomToActiveLayer() = 0; 00093 00095 virtual QgsVectorLayer* addVectorLayer( QString vectorLayerPath, QString baseName, QString providerKey ) = 0; 00096 00098 virtual QgsRasterLayer* addRasterLayer( QString rasterLayerPath, QString baseName = QString() ) = 0; 00099 00101 virtual QgsRasterLayer* addRasterLayer( const QString& url, const QString& layerName, const QString& providerKey ) = 0; 00102 00104 virtual bool addProject( QString theProject ) = 0; 00106 virtual void newProject( bool thePromptToSaveFlag = false ) = 0; 00107 00109 virtual QgsMapLayer *activeLayer() = 0; 00110 00114 virtual bool setActiveLayer( QgsMapLayer * ) = 0; 00115 00117 virtual int addToolBarIcon( QAction *qAction ) = 0; 00118 00127 virtual QAction* addToolBarWidget( QWidget* widget ) = 0; 00128 00130 virtual void removeToolBarIcon( QAction *qAction ) = 0; 00131 00140 virtual QAction* addRasterToolBarWidget( QWidget* widget ) = 0; 00141 00144 virtual int addRasterToolBarIcon( QAction *qAction ) = 0; 00145 00148 virtual void removeRasterToolBarIcon( QAction *qAction ) = 0; 00149 00152 00153 virtual int addVectorToolBarIcon( QAction *qAction ) = 0; 00154 00163 virtual QAction* addVectorToolBarWidget( QWidget* widget ) = 0; 00164 00167 virtual void removeVectorToolBarIcon( QAction *qAction ) = 0; 00168 00171 virtual int addDatabaseToolBarIcon( QAction *qAction ) = 0; 00172 00181 virtual QAction* addDatabaseToolBarWidget( QWidget* widget ) = 0; 00182 00185 virtual void removeDatabaseToolBarIcon( QAction *qAction ) = 0; 00186 00189 virtual int addWebToolBarIcon( QAction *qAction ) = 0; 00190 00199 virtual QAction* addWebToolBarWidget( QWidget* widget ) = 0; 00200 00203 virtual void removeWebToolBarIcon( QAction *qAction ) = 0; 00204 00206 virtual QToolBar *addToolBar( QString name ) = 0; 00207 00209 virtual QgsMapCanvas * mapCanvas() = 0; 00210 00212 virtual QWidget * mainWindow() = 0; 00213 00215 virtual QgsMessageBar * messageBar() = 0; 00216 00218 virtual QList<QgsComposerView*> activeComposers() = 0; 00219 00225 virtual QgsComposerView* createNewComposer( QString title = QString( "" ) ) = 0; 00226 00233 virtual QgsComposerView* duplicateComposer( QgsComposerView* composerView, QString title = QString( "" ) ) = 0; 00234 00238 virtual void deleteComposer( QgsComposerView* composerView ) = 0; 00239 00243 virtual QMap<QString, QVariant> defaultStyleSheetOptions() = 0; 00244 00249 virtual void buildStyleSheet( const QMap<QString, QVariant>& opts ) = 0; 00250 00254 virtual void saveStyleSheetOptions( const QMap<QString, QVariant>& opts ) = 0; 00255 00259 virtual QFont defaultStyleSheetFont() = 0; 00260 00262 virtual void addPluginToMenu( QString name, QAction* action ) = 0; 00263 00265 virtual void removePluginMenu( QString name, QAction* action ) = 0; 00266 00270 virtual void insertAddLayerAction( QAction *action ) = 0; 00271 00275 virtual void removeAddLayerAction( QAction *action ) = 0; 00276 00280 virtual void addPluginToDatabaseMenu( QString name, QAction* action ) = 0; 00281 00285 virtual void removePluginDatabaseMenu( QString name, QAction* action ) = 0; 00286 00290 virtual void addPluginToRasterMenu( QString name, QAction* action ) = 0; 00291 00295 virtual void removePluginRasterMenu( QString name, QAction* action ) = 0; 00296 00300 virtual void addPluginToVectorMenu( QString name, QAction* action ) = 0; 00301 00305 virtual void removePluginVectorMenu( QString name, QAction* action ) = 0; 00306 00310 virtual void addPluginToWebMenu( QString name, QAction* action ) = 0; 00311 00315 virtual void removePluginWebMenu( QString name, QAction* action ) = 0; 00316 00318 virtual void addDockWidget( Qt::DockWidgetArea area, QDockWidget * dockwidget ) = 0; 00319 00323 virtual void removeDockWidget( QDockWidget * dockwidget ) = 0; 00324 00328 virtual void showLayerProperties( QgsMapLayer *l ) = 0; 00329 00333 virtual void showAttributeTable( QgsVectorLayer *l ) = 0; 00334 00337 virtual void addWindow( QAction *action ) = 0; 00338 00341 virtual void removeWindow( QAction *action ) = 0; 00342 00346 virtual bool registerMainWindowAction( QAction* action, QString defaultShortcut ) = 0; 00347 00351 virtual bool unregisterMainWindowAction( QAction* action ) = 0; 00352 00353 // @todo is this deprecated in favour of QgsContextHelp? 00362 #ifndef Q_MOC_RUN 00363 Q_DECL_DEPRECATED 00364 #endif 00365 virtual void openURL( QString url, bool useQgisDocDirectory = true ) = 0; 00366 00367 00372 00373 virtual QMenu *fileMenu() = 0; 00374 virtual QMenu *editMenu() = 0; 00375 virtual QMenu *viewMenu() = 0; 00376 virtual QMenu *layerMenu() = 0; 00379 virtual QMenu *newLayerMenu() = 0; 00380 virtual QMenu *settingsMenu() = 0; 00381 virtual QMenu *pluginMenu() = 0; 00382 virtual QMenu *rasterMenu() = 0; 00385 virtual QMenu *databaseMenu() = 0; 00388 virtual QMenu *vectorMenu() = 0; 00391 virtual QMenu *webMenu() = 0; 00392 virtual QMenu *firstRightStandardMenu() = 0; 00393 virtual QMenu *windowMenu() = 0; 00394 virtual QMenu *helpMenu() = 0; 00395 00397 virtual QToolBar *fileToolBar() = 0; 00398 virtual QToolBar *layerToolBar() = 0; 00399 virtual QToolBar *mapNavToolToolBar() = 0; 00400 virtual QToolBar *digitizeToolBar() = 0; 00401 virtual QToolBar *advancedDigitizeToolBar() = 0; // added in v1.5 00402 virtual QToolBar *attributesToolBar() = 0; 00403 virtual QToolBar *pluginToolBar() = 0; 00404 virtual QToolBar *helpToolBar() = 0; 00407 virtual QToolBar *rasterToolBar() = 0; 00410 virtual QToolBar *vectorToolBar() = 0; 00413 virtual QToolBar *databaseToolBar() = 0; 00416 virtual QToolBar *webToolBar() = 0; 00417 00419 virtual QAction *actionNewProject() = 0; 00420 virtual QAction *actionOpenProject() = 0; 00421 virtual QAction *actionSaveProject() = 0; 00422 virtual QAction *actionSaveProjectAs() = 0; 00423 virtual QAction *actionSaveMapAsImage() = 0; 00424 virtual QAction *actionProjectProperties() = 0; 00425 virtual QAction *actionPrintComposer() = 0; 00426 virtual QAction *actionShowComposerManager() = 0; 00427 virtual QAction *actionExit() = 0; 00428 00430 virtual QAction *actionCutFeatures() = 0; 00431 virtual QAction *actionCopyFeatures() = 0; 00432 virtual QAction *actionPasteFeatures() = 0; 00433 virtual QAction *actionAddFeature() = 0; 00434 virtual QAction *actionDeleteSelected() = 0; 00435 virtual QAction *actionMoveFeature() = 0; 00436 virtual QAction *actionSplitFeatures() = 0; 00437 virtual QAction *actionAddRing() = 0; 00438 virtual QAction *actionAddPart() = 0; 00439 virtual QAction *actionSimplifyFeature() = 0; 00440 virtual QAction *actionDeleteRing() = 0; 00441 virtual QAction *actionDeletePart() = 0; 00442 virtual QAction *actionNodeTool() = 0; 00443 00445 virtual QAction *actionPan() = 0; 00446 virtual QAction *actionTouch() = 0; 00447 virtual QAction *actionPanToSelected() = 0; 00448 virtual QAction *actionZoomIn() = 0; 00449 virtual QAction *actionZoomOut() = 0; 00450 virtual QAction *actionSelect() = 0; 00451 virtual QAction *actionSelectRectangle() = 0; 00452 virtual QAction *actionSelectPolygon() = 0; 00453 virtual QAction *actionSelectFreehand() = 0; 00454 virtual QAction *actionSelectRadius() = 0; 00455 virtual QAction *actionIdentify() = 0; 00456 virtual QAction *actionMeasure() = 0; 00457 virtual QAction *actionMeasureArea() = 0; 00458 virtual QAction *actionZoomFullExtent() = 0; 00459 virtual QAction *actionZoomToLayer() = 0; 00460 virtual QAction *actionZoomToSelected() = 0; 00461 virtual QAction *actionZoomLast() = 0; 00462 virtual QAction *actionZoomActualSize() = 0; 00463 virtual QAction *actionMapTips() = 0; 00464 virtual QAction *actionNewBookmark() = 0; 00465 virtual QAction *actionShowBookmarks() = 0; 00466 virtual QAction *actionDraw() = 0; 00467 00469 virtual QAction *actionNewVectorLayer() = 0; 00470 virtual QAction *actionAddOgrLayer() = 0; 00471 virtual QAction *actionAddRasterLayer() = 0; 00472 virtual QAction *actionAddPgLayer() = 0; 00473 virtual QAction *actionAddWmsLayer() = 0; 00475 virtual QAction *actionCopyLayerStyle() = 0; 00477 virtual QAction *actionPasteLayerStyle() = 0; 00478 virtual QAction *actionOpenTable() = 0; 00479 virtual QAction *actionOpenFieldCalculator() = 0; 00480 virtual QAction *actionToggleEditing() = 0; 00482 virtual QAction *actionSaveActiveLayerEdits() = 0; 00484 virtual QAction *actionAllEdits() = 0; 00486 virtual QAction *actionSaveEdits() = 0; 00488 virtual QAction *actionSaveAllEdits() = 0; 00490 virtual QAction *actionRollbackEdits() = 0; 00492 virtual QAction *actionRollbackAllEdits() = 0; 00494 virtual QAction *actionCancelEdits() = 0; 00496 virtual QAction *actionCancelAllEdits() = 0; 00497 virtual QAction *actionLayerSaveAs() = 0; 00498 virtual QAction *actionLayerSelectionSaveAs() = 0; 00499 virtual QAction *actionRemoveLayer() = 0; 00501 virtual QAction *actionDuplicateLayer() = 0; 00502 virtual QAction *actionLayerProperties() = 0; 00503 virtual QAction *actionAddToOverview() = 0; 00504 virtual QAction *actionAddAllToOverview() = 0; 00505 virtual QAction *actionRemoveAllFromOverview() = 0; 00506 virtual QAction *actionHideAllLayers() = 0; 00507 virtual QAction *actionShowAllLayers() = 0; 00508 00510 virtual QAction *actionManagePlugins() = 0; 00511 virtual QAction *actionPluginListSeparator() = 0; 00512 virtual QAction *actionShowPythonDialog() = 0; 00513 00515 virtual QAction *actionToggleFullScreen() = 0; 00516 virtual QAction *actionOptions() = 0; 00517 virtual QAction *actionCustomProjection() = 0; 00518 00520 virtual QAction *actionHelpContents() = 0; 00521 virtual QAction *actionQgisHomePage() = 0; 00522 virtual QAction *actionCheckQgisVersion() = 0; 00523 virtual QAction *actionAbout() = 0; 00524 00526 // returns true when dialog was accepted 00527 // @added in 1.6 00528 virtual bool openFeatureForm( QgsVectorLayer *l, QgsFeature &f, bool updateFeatureOnly = false ) = 0; 00529 00530 virtual QDialog* getFeatureForm( QgsVectorLayer *l, QgsFeature &f ) = 0; 00531 00532 virtual void preloadForm( QString uifile ) = 0; 00533 00538 virtual QList<QgsMapLayer *> editableLayers( bool modified = false ) const = 0; 00539 00542 virtual int messageTimeout() = 0; 00543 00544 signals: 00548 void currentLayerChanged( QgsMapLayer * layer ); 00549 00553 void composerAdded( QgsComposerView* v ); 00554 00558 void composerWillBeRemoved( QgsComposerView* v ); 00562 void initializationCompleted(); 00571 void projectRead(); 00582 void newProjectCreated(); 00583 }; 00584 00585 #ifdef _MSC_VER 00586 # pragma warning( pop ) 00587 # pragma warning( disable: 4190 ) 00588 #endif 00589 00590 // FIXME: also in core/qgis.h 00591 #ifndef QGISEXTERN 00592 #ifdef WIN32 00593 # define QGISEXTERN extern "C" __declspec( dllexport ) 00594 #else 00595 # define QGISEXTERN extern "C" 00596 #endif 00597 #endif 00598 00599 #endif //#ifndef QGISINTERFACE_H