QGIS API Documentation  master-59fd5e0
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 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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines