Quantum GIS API Documentation  1.7.4
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 /* $Id$ */
00019 #ifndef QGISINTERFACE_H
00020 #define QGISINTERFACE_H
00021 
00022 class QAction;
00023 class QMenu;
00024 class QToolBar;
00025 class QDockWidget;
00026 class QMainWindow;
00027 class QWidget;
00028 
00029 class QgsComposerView;
00030 class QgsMapLayer;
00031 class QgsMapCanvas;
00032 class QgsRasterLayer;
00033 class QgsVectorLayer;
00034 class QgsLegendInterface;
00035 class QgsFeature;
00036 
00037 #include <QObject>
00038 #include <QPair>
00039 #include <map>
00040 
00041 #include <qgis.h>
00042 
00043 #ifdef _MSC_VER
00044 #  pragma warning( push )
00045 #  pragma warning( disable: 4996 )  // was declared deprecated
00046 #endif
00047 
00060 class GUI_EXPORT QgisInterface : public QObject
00061 {
00062     Q_OBJECT
00063 
00064   public:
00065 
00067     QgisInterface();
00068 
00070     virtual ~QgisInterface();
00071 
00075     virtual QgsLegendInterface* legendInterface() = 0;
00076 
00077 
00078   public slots: // TODO: do these functions really need to be slots?
00079 
00081     virtual void zoomFull() = 0;
00082 
00084     virtual void zoomToPrevious() = 0;
00085 
00087     virtual void zoomToNext() = 0;
00088 
00090     virtual void zoomToActiveLayer() = 0;
00091 
00093     virtual QgsVectorLayer* addVectorLayer( QString vectorLayerPath, QString baseName, QString providerKey ) = 0;
00094 
00096     virtual QgsRasterLayer* addRasterLayer( QString rasterLayerPath, QString baseName = QString() ) = 0;
00097 
00099     virtual QgsRasterLayer* addRasterLayer( const QString& url, const QString& layerName, const QString& providerKey, const QStringList& layers,
00100                                             const QStringList& styles, const QString& format, const QString& crs ) = 0;
00101 
00103     virtual bool addProject( QString theProject ) = 0;
00105     virtual void newProject( bool thePromptToSaveFlag = false ) = 0;
00106 
00108     virtual QgsMapLayer *activeLayer() = 0;
00109 
00113     virtual bool setActiveLayer( QgsMapLayer * ) = 0;
00114 
00116     virtual int addToolBarIcon( QAction *qAction ) = 0;
00117 
00119     virtual void removeToolBarIcon( QAction *qAction ) = 0;
00120 
00122     virtual QToolBar * addToolBar( QString name ) = 0;
00123 
00125     virtual QgsMapCanvas * mapCanvas() = 0;
00126 
00128     virtual QWidget * mainWindow() = 0;
00129 
00131     virtual QList<QgsComposerView*> activeComposers() = 0;
00132 
00134     virtual void addPluginToMenu( QString name, QAction* action ) = 0;
00135 
00137     virtual void removePluginMenu( QString name, QAction* action ) = 0;
00138 
00142     virtual void insertAddLayerAction( QAction *action ) = 0;
00143 
00147     virtual void removeAddLayerAction( QAction *action ) = 0;
00148 
00152     virtual void addPluginToDatabaseMenu( QString name, QAction* action ) = 0;
00153 
00157     virtual void removePluginDatabaseMenu( QString name, QAction* action ) = 0;
00158 
00160     virtual void addDockWidget( Qt::DockWidgetArea area, QDockWidget * dockwidget ) = 0;
00161 
00165     virtual void removeDockWidget( QDockWidget * dockwidget ) = 0;
00166 
00170 #ifndef Q_MOC_RUN
00171     Q_DECL_DEPRECATED
00172 #endif
00173     virtual void refreshLegend( QgsMapLayer *l ) = 0;
00174 
00178     virtual void showLayerProperties( QgsMapLayer *l ) = 0;
00179 
00183     virtual void showAttributeTable( QgsVectorLayer *l ) = 0;
00184 
00187     virtual void addWindow( QAction *action ) = 0;
00188 
00191     virtual void removeWindow( QAction *action ) = 0;
00192 
00196     virtual bool registerMainWindowAction( QAction* action, QString defaultShortcut ) = 0;
00197 
00201     virtual bool unregisterMainWindowAction( QAction* action ) = 0;
00202 
00203     // @todo is this deprecated in favour of QgsContextHelp?
00211 #ifndef Q_MOC_RUN
00212     Q_DECL_DEPRECATED
00213 #endif
00214     virtual void openURL( QString url, bool useQgisDocDirectory = true ) = 0;
00215 
00216 
00221 
00222     virtual QMenu *fileMenu() = 0;
00223     virtual QMenu *editMenu() = 0;
00224     virtual QMenu *viewMenu() = 0;
00225     virtual QMenu *layerMenu() = 0;
00226     virtual QMenu *settingsMenu() = 0;
00227     virtual QMenu *pluginMenu() = 0;
00228     virtual QMenu *firstRightStandardMenu() = 0;
00229     virtual QMenu *windowMenu() = 0;
00230     virtual QMenu *helpMenu() = 0;
00231 
00233     virtual QToolBar *fileToolBar() = 0;
00234     virtual QToolBar *layerToolBar() = 0;
00235     virtual QToolBar *mapNavToolToolBar() = 0;
00236     virtual QToolBar *digitizeToolBar() = 0;
00237     virtual QToolBar *advancedDigitizeToolBar() = 0;  // added in v1.5
00238     virtual QToolBar *attributesToolBar() = 0;
00239     virtual QToolBar *pluginToolBar() = 0;
00240     virtual QToolBar *helpToolBar() = 0;
00243     virtual QToolBar *rasterToolBar() = 0;
00244 
00246     virtual QAction *actionNewProject() = 0;
00247     virtual QAction *actionOpenProject() = 0;
00248 #ifndef Q_MOC_RUN
00249     Q_DECL_DEPRECATED
00250 #endif
00251     virtual QAction *actionFileSeparator1() = 0;
00252     virtual QAction *actionSaveProject() = 0;
00253     virtual QAction *actionSaveProjectAs() = 0;
00254     virtual QAction *actionSaveMapAsImage() = 0;
00255 #ifndef Q_MOC_RUN
00256     Q_DECL_DEPRECATED
00257 #endif
00258     virtual QAction *actionFileSeparator2() = 0;
00259     virtual QAction *actionProjectProperties() = 0;
00260 #ifndef Q_MOC_RUN
00261     Q_DECL_DEPRECATED
00262 #endif
00263     virtual QAction *actionFileSeparator3() = 0;
00264     virtual QAction *actionPrintComposer() = 0;
00265 #ifndef Q_MOC_RUN
00266     Q_DECL_DEPRECATED
00267 #endif
00268     virtual QAction *actionFileSeparator4() = 0;
00269     virtual QAction *actionExit() = 0;
00270 
00272     virtual QAction *actionCutFeatures() = 0;
00273     virtual QAction *actionCopyFeatures() = 0;
00274     virtual QAction *actionPasteFeatures() = 0;
00275 #ifndef Q_MOC_RUN
00276     Q_DECL_DEPRECATED
00277 #endif
00278     virtual QAction *actionEditSeparator1() = 0;
00279     virtual QAction *actionCapturePoint() = 0;
00280     virtual QAction *actionCaptureLine() = 0;
00281     virtual QAction *actionCapturePolygon() = 0;
00282     virtual QAction *actionDeleteSelected() = 0;
00283     virtual QAction *actionMoveFeature() = 0;
00284     virtual QAction *actionSplitFeatures() = 0;
00285 #ifndef Q_MOC_RUN
00286     Q_DECL_DEPRECATED
00287 #endif
00288     virtual QAction *actionAddVertex() = 0;
00289 #ifndef Q_MOC_RUN
00290     Q_DECL_DEPRECATED
00291 #endif
00292     virtual QAction *actionDeleteVertex() = 0;
00293 #ifndef Q_MOC_RUN
00294     Q_DECL_DEPRECATED
00295 #endif
00296     virtual QAction *actionMoveVertex() = 0;
00297     virtual QAction *actionAddRing() = 0;
00298     virtual QAction *actionAddIsland() = 0;
00299     virtual QAction *actionSimplifyFeature() = 0;
00300     virtual QAction *actionDeleteRing() = 0;
00301     virtual QAction *actionDeletePart() = 0;
00302     virtual QAction *actionNodeTool() = 0;
00303 #ifndef Q_MOC_RUN
00304     Q_DECL_DEPRECATED
00305 #endif
00306     virtual QAction *actionEditSeparator2() = 0;
00307 
00309     virtual QAction *actionPan() = 0;
00310     virtual QAction *actionZoomIn() = 0;
00311     virtual QAction *actionZoomOut() = 0;
00312     virtual QAction *actionSelect() = 0;
00313     virtual QAction *actionSelectRectangle() = 0;
00314     virtual QAction *actionSelectPolygon() = 0;
00315     virtual QAction *actionSelectFreehand() = 0;
00316     virtual QAction *actionSelectRadius() = 0;
00317     virtual QAction *actionIdentify() = 0;
00318     virtual QAction *actionMeasure() = 0;
00319     virtual QAction *actionMeasureArea() = 0;
00320 #ifndef Q_MOC_RUN
00321     Q_DECL_DEPRECATED
00322 #endif
00323     virtual QAction *actionViewSeparator1() = 0;
00324     virtual QAction *actionZoomFullExtent() = 0;
00325     virtual QAction *actionZoomToLayer() = 0;
00326     virtual QAction *actionZoomToSelected() = 0;
00327     virtual QAction *actionZoomLast() = 0;
00328     virtual QAction *actionZoomActualSize() = 0;
00329 #ifndef Q_MOC_RUN
00330     Q_DECL_DEPRECATED
00331 #endif
00332     virtual QAction *actionViewSeparator2() = 0;
00333     virtual QAction *actionMapTips() = 0;
00334     virtual QAction *actionNewBookmark() = 0;
00335     virtual QAction *actionShowBookmarks() = 0;
00336     virtual QAction *actionDraw() = 0;
00337 #ifndef Q_MOC_RUN
00338     Q_DECL_DEPRECATED
00339 #endif
00340     virtual QAction *actionViewSeparator3() = 0;
00341 
00343     virtual QAction *actionNewVectorLayer() = 0;
00344     virtual QAction *actionAddOgrLayer() = 0;
00345     virtual QAction *actionAddRasterLayer() = 0;
00346     virtual QAction *actionAddPgLayer() = 0;
00347     virtual QAction *actionAddWmsLayer() = 0;
00348 #ifndef Q_MOC_RUN
00349     Q_DECL_DEPRECATED
00350 #endif
00351     virtual QAction *actionLayerSeparator1() = 0;
00352     virtual QAction *actionOpenTable() = 0;
00353     virtual QAction *actionToggleEditing() = 0;
00354     virtual QAction *actionLayerSaveAs() = 0;
00355     virtual QAction *actionLayerSelectionSaveAs() = 0;
00356     virtual QAction *actionRemoveLayer() = 0;
00357     virtual QAction *actionLayerProperties() = 0;
00358 #ifndef Q_MOC_RUN
00359     Q_DECL_DEPRECATED
00360 #endif
00361     virtual QAction *actionLayerSeparator2() = 0;
00362     virtual QAction *actionAddToOverview() = 0;
00363     virtual QAction *actionAddAllToOverview() = 0;
00364     virtual QAction *actionRemoveAllFromOverview() = 0;
00365 #ifndef Q_MOC_RUN
00366     Q_DECL_DEPRECATED
00367 #endif
00368     virtual QAction *actionLayerSeparator3() = 0;
00369     virtual QAction *actionHideAllLayers() = 0;
00370     virtual QAction *actionShowAllLayers() = 0;
00371 
00373     virtual QAction *actionManagePlugins() = 0;
00374 #ifndef Q_MOC_RUN
00375     Q_DECL_DEPRECATED
00376 #endif
00377     virtual QAction *actionPluginSeparator1() = 0;
00378     virtual QAction *actionPluginListSeparator() = 0;
00379 #ifndef Q_MOC_RUN
00380     Q_DECL_DEPRECATED
00381 #endif
00382     virtual QAction *actionPluginSeparator2() = 0;
00383     virtual QAction *actionPluginPythonSeparator() = 0;
00384     virtual QAction *actionShowPythonDialog() = 0;
00385 
00387     virtual QAction *actionToggleFullScreen() = 0;
00388 #ifndef Q_MOC_RUN
00389     Q_DECL_DEPRECATED
00390 #endif
00391     virtual QAction *actionSettingsSeparator1() = 0;
00392     virtual QAction *actionOptions() = 0;
00393     virtual QAction *actionCustomProjection() = 0;
00394 
00396     virtual QAction *actionHelpContents() = 0;
00397 #ifndef Q_MOC_RUN
00398     Q_DECL_DEPRECATED
00399 #endif
00400     virtual QAction *actionHelpSeparator1() = 0;
00401     virtual QAction *actionQgisHomePage() = 0;
00402     virtual QAction *actionCheckQgisVersion() = 0;
00403 #ifndef Q_MOC_RUN
00404     Q_DECL_DEPRECATED
00405 #endif
00406     virtual QAction *actionHelpSeparator2() = 0;
00407     virtual QAction *actionAbout() = 0;
00408 
00410     // returns true when dialog was accepted
00411     // @added in 1.6
00412     virtual bool openFeatureForm( QgsVectorLayer *vlayer, QgsFeature &f, bool updateFeatureOnly = false ) = 0;
00413 
00414   signals:
00418     void currentLayerChanged( QgsMapLayer * layer );
00422     void composerAdded( QgsComposerView* v );
00426     void composerWillBeRemoved( QgsComposerView* v );
00430     void initializationCompleted();
00439     void projectRead();
00450     void newProjectCreated();
00451 
00452 };
00453 
00454 #ifdef _MSC_VER
00455 #  pragma warning( pop )
00456 #  pragma warning( disable: 4190 )
00457 #endif
00458 
00459 // FIXME: also in core/qgis.h
00460 #ifndef QGISEXTERN
00461 #ifdef WIN32
00462 #  define QGISEXTERN extern "C" __declspec( dllexport )
00463 #else
00464 #  define QGISEXTERN extern "C"
00465 #endif
00466 #endif
00467 
00468 #endif //#ifndef QGISINTERFACE_H
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines