Quantum GIS API Documentation  master-ce49b66
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 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
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Defines