|
QGIS API Documentation
master-59fd5e0
|
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 QgsPluginManagerInterface; 00035 class QgsFeature; 00036 class QgsMessageBar; 00037 00038 #include <QObject> 00039 #include <QFont> 00040 #include <QPair> 00041 #include <map> 00042 00043 #include <qgis.h> 00044 00045 #ifdef _MSC_VER 00046 # pragma warning( push ) 00047 # pragma warning( disable: 4996 ) // was declared deprecated 00048 #endif 00049 00062 class GUI_EXPORT QgisInterface : public QObject 00063 { 00064 Q_OBJECT 00065 00066 public: 00067 00069 QgisInterface(); 00070 00072 virtual ~QgisInterface(); 00073 00077 virtual QgsLegendInterface* legendInterface() = 0; 00078 00079 virtual QgsPluginManagerInterface* pluginManagerInterface() = 0; 00080 00081 public slots: // TODO: do these functions really need to be slots? 00082 00083 /* Exposed functions */ 00084 00086 virtual void zoomFull() = 0; 00087 00089 virtual void zoomToPrevious() = 0; 00090 00092 virtual void zoomToNext() = 0; 00093 00095 virtual void zoomToActiveLayer() = 0; 00096 00098 virtual QgsVectorLayer* addVectorLayer( QString vectorLayerPath, QString baseName, QString providerKey ) = 0; 00099 00101 virtual QgsRasterLayer* addRasterLayer( QString rasterLayerPath, QString baseName = QString() ) = 0; 00102 00104 virtual QgsRasterLayer* addRasterLayer( const QString& url, const QString& layerName, const QString& providerKey ) = 0; 00105 00107 virtual bool addProject( QString theProject ) = 0; 00109 virtual void newProject( bool thePromptToSaveFlag = false ) = 0; 00110 00112 virtual QgsMapLayer *activeLayer() = 0; 00113 00117 virtual bool setActiveLayer( QgsMapLayer * ) = 0; 00118 00120 virtual int addToolBarIcon( QAction *qAction ) = 0; 00121 00130 virtual QAction* addToolBarWidget( QWidget* widget ) = 0; 00131 00133 virtual void removeToolBarIcon( QAction *qAction ) = 0; 00134 00143 virtual QAction* addRasterToolBarWidget( QWidget* widget ) = 0; 00144 00147 virtual int addRasterToolBarIcon( QAction *qAction ) = 0; 00148 00151 virtual void removeRasterToolBarIcon( QAction *qAction ) = 0; 00152 00155 00156 virtual int addVectorToolBarIcon( QAction *qAction ) = 0; 00157 00166 virtual QAction* addVectorToolBarWidget( QWidget* widget ) = 0; 00167 00170 virtual void removeVectorToolBarIcon( QAction *qAction ) = 0; 00171 00174 virtual int addDatabaseToolBarIcon( QAction *qAction ) = 0; 00175 00184 virtual QAction* addDatabaseToolBarWidget( QWidget* widget ) = 0; 00185 00188 virtual void removeDatabaseToolBarIcon( QAction *qAction ) = 0; 00189 00192 virtual int addWebToolBarIcon( QAction *qAction ) = 0; 00193 00202 virtual QAction* addWebToolBarWidget( QWidget* widget ) = 0; 00203 00206 virtual void removeWebToolBarIcon( QAction *qAction ) = 0; 00207 00209 virtual QToolBar *addToolBar( QString name ) = 0; 00210 00212 virtual QgsMapCanvas * mapCanvas() = 0; 00213 00215 virtual QWidget * mainWindow() = 0; 00216 00218 virtual QgsMessageBar * messageBar() = 0; 00219 00221 virtual QList<QgsComposerView*> activeComposers() = 0; 00222 00228 virtual QgsComposerView* createNewComposer( QString title = QString( "" ) ) = 0; 00229 00236 virtual QgsComposerView* duplicateComposer( QgsComposerView* composerView, QString title = QString( "" ) ) = 0; 00237 00241 virtual void deleteComposer( QgsComposerView* composerView ) = 0; 00242 00246 virtual QMap<QString, QVariant> defaultStyleSheetOptions() = 0; 00247 00252 virtual void buildStyleSheet( const QMap<QString, QVariant>& opts ) = 0; 00253 00257 virtual void saveStyleSheetOptions( const QMap<QString, QVariant>& opts ) = 0; 00258 00262 virtual QFont defaultStyleSheetFont() = 0; 00263 00265 virtual void addPluginToMenu( QString name, QAction* action ) = 0; 00266 00268 virtual void removePluginMenu( QString name, QAction* action ) = 0; 00269 00273 virtual void insertAddLayerAction( QAction *action ) = 0; 00274 00278 virtual void removeAddLayerAction( QAction *action ) = 0; 00279 00283 virtual void addPluginToDatabaseMenu( QString name, QAction* action ) = 0; 00284 00288 virtual void removePluginDatabaseMenu( QString name, QAction* action ) = 0; 00289 00293 virtual void addPluginToRasterMenu( QString name, QAction* action ) = 0; 00294 00298 virtual void removePluginRasterMenu( QString name, QAction* action ) = 0; 00299 00303 virtual void addPluginToVectorMenu( QString name, QAction* action ) = 0; 00304 00308 virtual void removePluginVectorMenu( QString name, QAction* action ) = 0; 00309 00313 virtual void addPluginToWebMenu( QString name, QAction* action ) = 0; 00314 00318 virtual void removePluginWebMenu( QString name, QAction* action ) = 0; 00319 00321 virtual void addDockWidget( Qt::DockWidgetArea area, QDockWidget * dockwidget ) = 0; 00322 00326 virtual void removeDockWidget( QDockWidget * dockwidget ) = 0; 00327 00331 virtual void showLayerProperties( QgsMapLayer *l ) = 0; 00332 00336 virtual void showAttributeTable( QgsVectorLayer *l ) = 0; 00337 00340 virtual void addWindow( QAction *action ) = 0; 00341 00344 virtual void removeWindow( QAction *action ) = 0; 00345 00349 virtual bool registerMainWindowAction( QAction* action, QString defaultShortcut ) = 0; 00350 00354 virtual bool unregisterMainWindowAction( QAction* action ) = 0; 00355 00356 // @todo is this deprecated in favour of QgsContextHelp? 00365 #ifndef Q_MOC_RUN 00366 Q_DECL_DEPRECATED 00367 #endif 00368 virtual void openURL( QString url, bool useQgisDocDirectory = true ) = 0; 00369 00370 00375 00376 #ifndef Q_MOC_RUN 00377 Q_DECL_DEPRECATED 00378 #endif 00379 virtual QMenu *fileMenu() = 0; 00380 virtual QMenu *projectMenu() = 0; 00381 virtual QMenu *editMenu() = 0; 00382 virtual QMenu *viewMenu() = 0; 00383 virtual QMenu *layerMenu() = 0; 00386 virtual QMenu *newLayerMenu() = 0; 00387 virtual QMenu *settingsMenu() = 0; 00388 virtual QMenu *pluginMenu() = 0; 00389 virtual QMenu *rasterMenu() = 0; 00392 virtual QMenu *databaseMenu() = 0; 00395 virtual QMenu *vectorMenu() = 0; 00398 virtual QMenu *webMenu() = 0; 00399 virtual QMenu *firstRightStandardMenu() = 0; 00400 virtual QMenu *windowMenu() = 0; 00401 virtual QMenu *helpMenu() = 0; 00402 00404 virtual QToolBar *fileToolBar() = 0; 00405 virtual QToolBar *layerToolBar() = 0; 00406 virtual QToolBar *mapNavToolToolBar() = 0; 00407 virtual QToolBar *digitizeToolBar() = 0; 00408 virtual QToolBar *advancedDigitizeToolBar() = 0; // added in v1.5 00409 virtual QToolBar *attributesToolBar() = 0; 00410 virtual QToolBar *pluginToolBar() = 0; 00411 virtual QToolBar *helpToolBar() = 0; 00414 virtual QToolBar *rasterToolBar() = 0; 00417 virtual QToolBar *vectorToolBar() = 0; 00420 virtual QToolBar *databaseToolBar() = 0; 00423 virtual QToolBar *webToolBar() = 0; 00424 00426 virtual QAction *actionNewProject() = 0; 00427 virtual QAction *actionOpenProject() = 0; 00428 virtual QAction *actionSaveProject() = 0; 00429 virtual QAction *actionSaveProjectAs() = 0; 00430 virtual QAction *actionSaveMapAsImage() = 0; 00431 virtual QAction *actionProjectProperties() = 0; 00432 virtual QAction *actionPrintComposer() = 0; 00433 virtual QAction *actionShowComposerManager() = 0; 00434 virtual QAction *actionExit() = 0; 00435 00437 virtual QAction *actionCutFeatures() = 0; 00438 virtual QAction *actionCopyFeatures() = 0; 00439 virtual QAction *actionPasteFeatures() = 0; 00440 virtual QAction *actionAddFeature() = 0; 00441 virtual QAction *actionDeleteSelected() = 0; 00442 virtual QAction *actionMoveFeature() = 0; 00443 virtual QAction *actionSplitFeatures() = 0; 00444 virtual QAction *actionAddRing() = 0; 00445 virtual QAction *actionAddPart() = 0; 00446 virtual QAction *actionSimplifyFeature() = 0; 00447 virtual QAction *actionDeleteRing() = 0; 00448 virtual QAction *actionDeletePart() = 0; 00449 virtual QAction *actionNodeTool() = 0; 00450 00452 virtual QAction *actionPan() = 0; 00453 virtual QAction *actionTouch() = 0; 00454 virtual QAction *actionPanToSelected() = 0; 00455 virtual QAction *actionZoomIn() = 0; 00456 virtual QAction *actionZoomOut() = 0; 00457 virtual QAction *actionSelect() = 0; 00458 virtual QAction *actionSelectRectangle() = 0; 00459 virtual QAction *actionSelectPolygon() = 0; 00460 virtual QAction *actionSelectFreehand() = 0; 00461 virtual QAction *actionSelectRadius() = 0; 00462 virtual QAction *actionIdentify() = 0; 00463 virtual QAction *actionMeasure() = 0; 00464 virtual QAction *actionMeasureArea() = 0; 00465 virtual QAction *actionZoomFullExtent() = 0; 00466 virtual QAction *actionZoomToLayer() = 0; 00467 virtual QAction *actionZoomToSelected() = 0; 00468 virtual QAction *actionZoomLast() = 0; 00469 virtual QAction *actionZoomActualSize() = 0; 00470 virtual QAction *actionMapTips() = 0; 00471 virtual QAction *actionNewBookmark() = 0; 00472 virtual QAction *actionShowBookmarks() = 0; 00473 virtual QAction *actionDraw() = 0; 00474 00476 virtual QAction *actionNewVectorLayer() = 0; 00477 virtual QAction *actionAddOgrLayer() = 0; 00478 virtual QAction *actionAddRasterLayer() = 0; 00479 virtual QAction *actionAddPgLayer() = 0; 00480 virtual QAction *actionAddWmsLayer() = 0; 00482 virtual QAction *actionCopyLayerStyle() = 0; 00484 virtual QAction *actionPasteLayerStyle() = 0; 00485 virtual QAction *actionOpenTable() = 0; 00486 virtual QAction *actionOpenFieldCalculator() = 0; 00487 virtual QAction *actionToggleEditing() = 0; 00489 virtual QAction *actionSaveActiveLayerEdits() = 0; 00491 virtual QAction *actionAllEdits() = 0; 00493 virtual QAction *actionSaveEdits() = 0; 00495 virtual QAction *actionSaveAllEdits() = 0; 00497 virtual QAction *actionRollbackEdits() = 0; 00499 virtual QAction *actionRollbackAllEdits() = 0; 00501 virtual QAction *actionCancelEdits() = 0; 00503 virtual QAction *actionCancelAllEdits() = 0; 00504 virtual QAction *actionLayerSaveAs() = 0; 00505 virtual QAction *actionLayerSelectionSaveAs() = 0; 00506 virtual QAction *actionRemoveLayer() = 0; 00508 virtual QAction *actionDuplicateLayer() = 0; 00509 virtual QAction *actionLayerProperties() = 0; 00510 virtual QAction *actionAddToOverview() = 0; 00511 virtual QAction *actionAddAllToOverview() = 0; 00512 virtual QAction *actionRemoveAllFromOverview() = 0; 00513 virtual QAction *actionHideAllLayers() = 0; 00514 virtual QAction *actionShowAllLayers() = 0; 00515 00517 virtual QAction *actionManagePlugins() = 0; 00518 virtual QAction *actionPluginListSeparator() = 0; 00519 virtual QAction *actionShowPythonDialog() = 0; 00520 00522 virtual QAction *actionToggleFullScreen() = 0; 00523 virtual QAction *actionOptions() = 0; 00524 virtual QAction *actionCustomProjection() = 0; 00525 00527 virtual QAction *actionHelpContents() = 0; 00528 virtual QAction *actionQgisHomePage() = 0; 00529 virtual QAction *actionCheckQgisVersion() = 0; 00530 virtual QAction *actionAbout() = 0; 00531 00533 // returns true when dialog was accepted 00534 // @added in 1.6 00535 virtual bool openFeatureForm( QgsVectorLayer *l, QgsFeature &f, bool updateFeatureOnly = false ) = 0; 00536 00537 virtual QDialog* getFeatureForm( QgsVectorLayer *l, QgsFeature &f ) = 0; 00538 00539 virtual void preloadForm( QString uifile ) = 0; 00540 00545 virtual QList<QgsMapLayer *> editableLayers( bool modified = false ) const = 0; 00546 00549 virtual int messageTimeout() = 0; 00550 00551 signals: 00555 void currentLayerChanged( QgsMapLayer * layer ); 00556 00560 void composerAdded( QgsComposerView* v ); 00561 00565 void composerWillBeRemoved( QgsComposerView* v ); 00569 void initializationCompleted(); 00578 void projectRead(); 00589 void newProjectCreated(); 00590 }; 00591 00592 #ifdef _MSC_VER 00593 # pragma warning( pop ) 00594 # pragma warning( disable: 4190 ) 00595 #endif 00596 00597 // FIXME: also in core/qgis.h 00598 #ifndef QGISEXTERN 00599 #ifdef WIN32 00600 # define QGISEXTERN extern "C" __declspec( dllexport ) 00601 #else 00602 # define QGISEXTERN extern "C" 00603 #endif 00604 #endif 00605 00606 #endif //#ifndef QGISINTERFACE_H