Quantum GIS API Documentation  1.8
src/gui/qgisinterface.h
Go to the documentation of this file.
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 
00036 #include <QObject>
00037 #include <QPair>
00038 #include <map>
00039 
00040 #include <qgis.h>
00041 
00042 #ifdef _MSC_VER
00043 #  pragma warning( push )
00044 #  pragma warning( disable: 4996 )  // was declared deprecated
00045 #endif
00046 
00059 class GUI_EXPORT QgisInterface : public QObject
00060 {
00061     Q_OBJECT
00062 
00063   public:
00064 
00066     QgisInterface();
00067 
00069     virtual ~QgisInterface();
00070 
00074     virtual QgsLegendInterface* legendInterface() = 0;
00075 
00076 
00077   public slots: // TODO: do these functions really need to be slots?
00078 
00080     virtual void zoomFull() = 0;
00081 
00083     virtual void zoomToPrevious() = 0;
00084 
00086     virtual void zoomToNext() = 0;
00087 
00089     virtual void zoomToActiveLayer() = 0;
00090 
00092     virtual QgsVectorLayer* addVectorLayer( QString vectorLayerPath, QString baseName, QString providerKey ) = 0;
00093 
00095     virtual QgsRasterLayer* addRasterLayer( QString rasterLayerPath, QString baseName = QString() ) = 0;
00096 
00098     virtual QgsRasterLayer* addRasterLayer( const QString& url, const QString& layerName, const QString& providerKey, const QStringList& layers,
00099                                             const QStringList& styles, const QString& format, const QString& crs ) = 0;
00100 
00102     virtual bool addProject( QString theProject ) = 0;
00104     virtual void newProject( bool thePromptToSaveFlag = false ) = 0;
00105 
00107     virtual QgsMapLayer *activeLayer() = 0;
00108 
00112     virtual bool setActiveLayer( QgsMapLayer * ) = 0;
00113 
00115     virtual int addToolBarIcon( QAction *qAction ) = 0;
00116 
00118     virtual void removeToolBarIcon( QAction *qAction ) = 0;
00119 
00122     virtual int addRasterToolBarIcon( QAction *qAction ) = 0;
00123 
00126     virtual void removeRasterToolBarIcon( QAction *qAction ) = 0;
00127 
00130     virtual int addVectorToolBarIcon( QAction *qAction ) = 0;
00131 
00134     virtual void removeVectorToolBarIcon( QAction *qAction ) = 0;
00135 
00138     virtual int addDatabaseToolBarIcon( QAction *qAction ) = 0;
00139 
00142     virtual void removeDatabaseToolBarIcon( QAction *qAction ) = 0;
00143 
00146     virtual int addWebToolBarIcon( QAction *qAction ) = 0;
00147 
00150     virtual void removeWebToolBarIcon( QAction *qAction ) = 0;
00151 
00153     virtual QToolBar * addToolBar( QString name ) = 0;
00154 
00156     virtual QgsMapCanvas * mapCanvas() = 0;
00157 
00159     virtual QWidget * mainWindow() = 0;
00160 
00162     virtual QList<QgsComposerView*> activeComposers() = 0;
00163 
00165     virtual void addPluginToMenu( QString name, QAction* action ) = 0;
00166 
00168     virtual void removePluginMenu( QString name, QAction* action ) = 0;
00169 
00173     virtual void insertAddLayerAction( QAction *action ) = 0;
00174 
00178     virtual void removeAddLayerAction( QAction *action ) = 0;
00179 
00183     virtual void addPluginToDatabaseMenu( QString name, QAction* action ) = 0;
00184 
00188     virtual void removePluginDatabaseMenu( QString name, QAction* action ) = 0;
00189 
00193     virtual void addPluginToRasterMenu( QString name, QAction* action ) = 0;
00194 
00198     virtual void removePluginRasterMenu( QString name, QAction* action ) = 0;
00199 
00203     virtual void addPluginToVectorMenu( QString name, QAction* action ) = 0;
00204 
00208     virtual void removePluginVectorMenu( QString name, QAction* action ) = 0;
00209 
00213     virtual void addPluginToWebMenu( QString name, QAction* action ) = 0;
00214 
00218     virtual void removePluginWebMenu( QString name, QAction* action ) = 0;
00219 
00220 
00222     virtual void addDockWidget( Qt::DockWidgetArea area, QDockWidget * dockwidget ) = 0;
00223 
00227     virtual void removeDockWidget( QDockWidget * dockwidget ) = 0;
00228 
00232 #ifndef Q_MOC_RUN
00233     Q_DECL_DEPRECATED
00234 #endif
00235     virtual void refreshLegend( QgsMapLayer *l ) = 0;
00236 
00240     virtual void showLayerProperties( QgsMapLayer *l ) = 0;
00241 
00245     virtual void showAttributeTable( QgsVectorLayer *l ) = 0;
00246 
00249     virtual void addWindow( QAction *action ) = 0;
00250 
00253     virtual void removeWindow( QAction *action ) = 0;
00254 
00258     virtual bool registerMainWindowAction( QAction* action, QString defaultShortcut ) = 0;
00259 
00263     virtual bool unregisterMainWindowAction( QAction* action ) = 0;
00264 
00265     // @todo is this deprecated in favour of QgsContextHelp?
00273 #ifndef Q_MOC_RUN
00274     Q_DECL_DEPRECATED
00275 #endif
00276     virtual void openURL( QString url, bool useQgisDocDirectory = true ) = 0;
00277 
00278 
00283 
00284     virtual QMenu *fileMenu() = 0;
00285     virtual QMenu *editMenu() = 0;
00286     virtual QMenu *viewMenu() = 0;
00287     virtual QMenu *layerMenu() = 0;
00288     virtual QMenu *settingsMenu() = 0;
00289     virtual QMenu *pluginMenu() = 0;
00290     virtual QMenu *rasterMenu() = 0;
00293     virtual QMenu *databaseMenu() = 0;
00296     virtual QMenu *vectorMenu() = 0;
00299     virtual QMenu *webMenu() = 0;
00300     virtual QMenu *firstRightStandardMenu() = 0;
00301     virtual QMenu *windowMenu() = 0;
00302     virtual QMenu *helpMenu() = 0;
00303 
00305     virtual QToolBar *fileToolBar() = 0;
00306     virtual QToolBar *layerToolBar() = 0;
00307     virtual QToolBar *mapNavToolToolBar() = 0;
00308     virtual QToolBar *digitizeToolBar() = 0;
00309     virtual QToolBar *advancedDigitizeToolBar() = 0;  // added in v1.5
00310     virtual QToolBar *attributesToolBar() = 0;
00311     virtual QToolBar *pluginToolBar() = 0;
00312     virtual QToolBar *helpToolBar() = 0;
00315     virtual QToolBar *rasterToolBar() = 0;
00318     virtual QToolBar *vectorToolBar() = 0;
00321     virtual QToolBar *databaseToolBar() = 0;
00324     virtual QToolBar *webToolBar() = 0;
00325 
00327     virtual QAction *actionNewProject() = 0;
00328     virtual QAction *actionOpenProject() = 0;
00329 #ifndef Q_MOC_RUN
00330     Q_DECL_DEPRECATED
00331 #endif
00332     virtual QAction *actionFileSeparator1() = 0;
00333     virtual QAction *actionSaveProject() = 0;
00334     virtual QAction *actionSaveProjectAs() = 0;
00335     virtual QAction *actionSaveMapAsImage() = 0;
00336 #ifndef Q_MOC_RUN
00337     Q_DECL_DEPRECATED
00338 #endif
00339     virtual QAction *actionFileSeparator2() = 0;
00340     virtual QAction *actionProjectProperties() = 0;
00341 #ifndef Q_MOC_RUN
00342     Q_DECL_DEPRECATED
00343 #endif
00344     virtual QAction *actionFileSeparator3() = 0;
00345     virtual QAction *actionPrintComposer() = 0;
00346 #ifndef Q_MOC_RUN
00347     Q_DECL_DEPRECATED
00348 #endif
00349     virtual QAction *actionFileSeparator4() = 0;
00350     virtual QAction *actionExit() = 0;
00351 
00353     virtual QAction *actionCutFeatures() = 0;
00354     virtual QAction *actionCopyFeatures() = 0;
00355     virtual QAction *actionPasteFeatures() = 0;
00356 #ifndef Q_MOC_RUN
00357     Q_DECL_DEPRECATED
00358 #endif
00359     virtual QAction *actionEditSeparator1() = 0;
00360     virtual QAction *actionAddFeature() = 0;
00361 #ifndef Q_MOC_RUN
00362     Q_DECL_DEPRECATED
00363 #endif
00364     virtual QAction *actionCapturePoint() = 0;
00365 #ifndef Q_MOC_RUN
00366     Q_DECL_DEPRECATED
00367 #endif
00368     virtual QAction *actionCaptureLine() = 0;
00369 #ifndef Q_MOC_RUN
00370     Q_DECL_DEPRECATED
00371 #endif
00372     virtual QAction *actionCapturePolygon() = 0;
00373     virtual QAction *actionDeleteSelected() = 0;
00374     virtual QAction *actionMoveFeature() = 0;
00375     virtual QAction *actionSplitFeatures() = 0;
00376 #ifndef Q_MOC_RUN
00377     Q_DECL_DEPRECATED
00378 #endif
00379     virtual QAction *actionAddVertex() = 0;
00380 #ifndef Q_MOC_RUN
00381     Q_DECL_DEPRECATED
00382 #endif
00383     virtual QAction *actionDeleteVertex() = 0;
00384 #ifndef Q_MOC_RUN
00385     Q_DECL_DEPRECATED
00386 #endif
00387     virtual QAction *actionMoveVertex() = 0;
00388     virtual QAction *actionAddRing() = 0;
00389 #ifndef Q_MOC_RUN
00390     Q_DECL_DEPRECATED
00391 #endif
00392     virtual QAction *actionAddIsland() = 0;
00393     virtual QAction *actionAddPart() = 0;
00394     virtual QAction *actionSimplifyFeature() = 0;
00395     virtual QAction *actionDeleteRing() = 0;
00396     virtual QAction *actionDeletePart() = 0;
00397     virtual QAction *actionNodeTool() = 0;
00398 #ifndef Q_MOC_RUN
00399     Q_DECL_DEPRECATED
00400 #endif
00401     virtual QAction *actionEditSeparator2() = 0;
00402 
00404     virtual QAction *actionPan() = 0;
00405     virtual QAction *actionPanToSelected() = 0;
00406     virtual QAction *actionZoomIn() = 0;
00407     virtual QAction *actionZoomOut() = 0;
00408     virtual QAction *actionSelect() = 0;
00409     virtual QAction *actionSelectRectangle() = 0;
00410     virtual QAction *actionSelectPolygon() = 0;
00411     virtual QAction *actionSelectFreehand() = 0;
00412     virtual QAction *actionSelectRadius() = 0;
00413     virtual QAction *actionIdentify() = 0;
00414     virtual QAction *actionMeasure() = 0;
00415     virtual QAction *actionMeasureArea() = 0;
00416 #ifndef Q_MOC_RUN
00417     Q_DECL_DEPRECATED
00418 #endif
00419     virtual QAction *actionViewSeparator1() = 0;
00420     virtual QAction *actionZoomFullExtent() = 0;
00421     virtual QAction *actionZoomToLayer() = 0;
00422     virtual QAction *actionZoomToSelected() = 0;
00423     virtual QAction *actionZoomLast() = 0;
00424     virtual QAction *actionZoomActualSize() = 0;
00425 #ifndef Q_MOC_RUN
00426     Q_DECL_DEPRECATED
00427 #endif
00428     virtual QAction *actionViewSeparator2() = 0;
00429     virtual QAction *actionMapTips() = 0;
00430     virtual QAction *actionNewBookmark() = 0;
00431     virtual QAction *actionShowBookmarks() = 0;
00432     virtual QAction *actionDraw() = 0;
00433 #ifndef Q_MOC_RUN
00434     Q_DECL_DEPRECATED
00435 #endif
00436     virtual QAction *actionViewSeparator3() = 0;
00437 
00439     virtual QAction *actionNewVectorLayer() = 0;
00440     virtual QAction *actionAddOgrLayer() = 0;
00441     virtual QAction *actionAddRasterLayer() = 0;
00442     virtual QAction *actionAddPgLayer() = 0;
00443     virtual QAction *actionAddWmsLayer() = 0;
00444 #ifndef Q_MOC_RUN
00445     Q_DECL_DEPRECATED
00446 #endif
00447     virtual QAction *actionLayerSeparator1() = 0;
00448     virtual QAction *actionOpenTable() = 0;
00449     virtual QAction *actionToggleEditing() = 0;
00450     virtual QAction *actionLayerSaveAs() = 0;
00451     virtual QAction *actionLayerSelectionSaveAs() = 0;
00452     virtual QAction *actionRemoveLayer() = 0;
00453     virtual QAction *actionLayerProperties() = 0;
00454 #ifndef Q_MOC_RUN
00455     Q_DECL_DEPRECATED
00456 #endif
00457     virtual QAction *actionLayerSeparator2() = 0;
00458     virtual QAction *actionAddToOverview() = 0;
00459     virtual QAction *actionAddAllToOverview() = 0;
00460     virtual QAction *actionRemoveAllFromOverview() = 0;
00461 #ifndef Q_MOC_RUN
00462     Q_DECL_DEPRECATED
00463 #endif
00464     virtual QAction *actionLayerSeparator3() = 0;
00465     virtual QAction *actionHideAllLayers() = 0;
00466     virtual QAction *actionShowAllLayers() = 0;
00467 
00469     virtual QAction *actionManagePlugins() = 0;
00470 #ifndef Q_MOC_RUN
00471     Q_DECL_DEPRECATED
00472 #endif
00473     virtual QAction *actionPluginSeparator1() = 0;
00474     virtual QAction *actionPluginListSeparator() = 0;
00475 #ifndef Q_MOC_RUN
00476     Q_DECL_DEPRECATED
00477 #endif
00478     virtual QAction *actionPluginSeparator2() = 0;
00479     virtual QAction *actionPluginPythonSeparator() = 0;
00480     virtual QAction *actionShowPythonDialog() = 0;
00481 
00483     virtual QAction *actionToggleFullScreen() = 0;
00484 #ifndef Q_MOC_RUN
00485     Q_DECL_DEPRECATED
00486 #endif
00487     virtual QAction *actionSettingsSeparator1() = 0;
00488     virtual QAction *actionOptions() = 0;
00489     virtual QAction *actionCustomProjection() = 0;
00490 
00492     virtual QAction *actionHelpContents() = 0;
00493 #ifndef Q_MOC_RUN
00494     Q_DECL_DEPRECATED
00495 #endif
00496     virtual QAction *actionHelpSeparator1() = 0;
00497     virtual QAction *actionQgisHomePage() = 0;
00498     virtual QAction *actionCheckQgisVersion() = 0;
00499 #ifndef Q_MOC_RUN
00500     Q_DECL_DEPRECATED
00501 #endif
00502     virtual QAction *actionHelpSeparator2() = 0;
00503     virtual QAction *actionAbout() = 0;
00504 
00506     // returns true when dialog was accepted
00507     // @added in 1.6
00508     virtual bool openFeatureForm( QgsVectorLayer *vlayer, QgsFeature &f, bool updateFeatureOnly = false ) = 0;
00509 
00510   signals:
00514     void currentLayerChanged( QgsMapLayer * layer );
00518     void composerAdded( QgsComposerView* v );
00522     void composerWillBeRemoved( QgsComposerView* v );
00526     void initializationCompleted();
00535     void projectRead();
00546     void newProjectCreated();
00547 
00548 };
00549 
00550 #ifdef _MSC_VER
00551 #  pragma warning( pop )
00552 #  pragma warning( disable: 4190 )
00553 #endif
00554 
00555 // FIXME: also in core/qgis.h
00556 #ifndef QGISEXTERN
00557 #ifdef WIN32
00558 #  define QGISEXTERN extern "C" __declspec( dllexport )
00559 #else
00560 #  define QGISEXTERN extern "C"
00561 #endif
00562 #endif
00563 
00564 #endif //#ifndef QGISINTERFACE_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines