QGIS API Documentation 3.39.0-Master (52f98f8c831)
Loading...
Searching...
No Matches
qgsapplication.h
Go to the documentation of this file.
1/***************************************************************************
2 qgsapplication.h - Accessors for application-wide data
3 --------------------------------------
4 Date : 02-Jan-2006
5 Copyright : (C) 2006 by Tom Elwertowski
6 Email : telwertowski at users dot sourceforge dot net
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15#ifndef QGSAPPLICATION_H
16#define QGSAPPLICATION_H
17
18#include "qgis_core.h"
19#include <QApplication>
20#include <QEvent>
21#include <QStringList>
22#include <QColor>
23
24#include <memory>
25#include "qgis_sip.h"
26#include "qgsconfig.h"
29
35class QgsTaskManager;
44class QgsSvgCache;
45class QgsImageCache;
46class QgsSourceCache;
54class QgsMessageLog;
56class QgsAnnotationRegistry;
57class QgsUserProfile;
61class QgsAuthManager;
64class QTranslator;
67class QgsStyleModel;
78class QgsFontManager;
81
96class CORE_EXPORT QgsApplication : public QApplication
97{
98
99#ifdef SIP_RUN
100 % TypeCode
101 // Convert a Python argv list to a conventional C argc count and argv array.
102 static char **qtgui_ArgvToC( PyObject *argvlist, int &argc )
103 {
104 char **argv;
105
106 argc = PyList_GET_SIZE( argvlist );
107
108 // Allocate space for two copies of the argument pointers, plus the
109 // terminating NULL.
110 if ( ( argv = ( char ** )sipMalloc( 2 * ( argc + 1 ) * sizeof( char * ) ) ) == NULL )
111 return NULL;
112
113 // Convert the list.
114 for ( int a = 0; a < argc; ++a )
115 {
116 char *arg;
117 // Get the argument and allocate memory for it.
118 if ( ( arg = PyBytes_AsString( PyList_GET_ITEM( argvlist, a ) ) ) == NULL ||
119 ( argv[a] = ( char * )sipMalloc( strlen( arg ) + 1 ) ) == NULL )
120 return NULL;
121 // Copy the argument and save a pointer to it.
122 strcpy( argv[a], arg );
123 argv[a + argc + 1] = argv[a];
124 }
125
126 argv[argc + argc + 1] = argv[argc] = NULL;
127
128 return argv;
129 }
130
131 // Remove arguments from the Python argv list that have been removed from the
132 // C argv array.
133 static void qtgui_UpdatePyArgv( PyObject *argvlist, int argc, char **argv )
134 {
135 for ( int a = 0, na = 0; a < argc; ++a )
136 {
137 // See if it was removed.
138 if ( argv[na] == argv[a + argc + 1] )
139 ++na;
140 else
141 PyList_SetSlice( argvlist, na, na + 1, NULL );
142 }
143 }
144 % End
145#endif
146
147 Q_OBJECT
148
149 public:
150
164
165 static const char *QGIS_ORGANIZATION_NAME;
166 static const char *QGIS_ORGANIZATION_DOMAIN;
167 static const char *QGIS_APPLICATION_NAME;
168#ifndef SIP_RUN
169
179 QgsApplication( int &argc, char **argv, bool GUIenabled, const QString &profileFolder = QString(), const QString &platformName = "external" );
180#else
181
190 QgsApplication( SIP_PYLIST argv, bool GUIenabled, QString profileFolder = QString(), QString platformName = "external" ) / PostHook = __pyQtQAppHook__ / [( int &argc, char **argv, bool GUIenabled, const QString &profileFolder = QString(), const QString &platformName = "desktop" )];
191 % MethodCode
192 // The Python interface is a list of argument strings that is modified.
193
194 int argc;
195 char **argv;
196
197 // Convert the list.
198 if ( ( argv = qtgui_ArgvToC( a0, argc ) ) == NULL )
199 sipIsErr = 1;
200 else
201 {
202 // Create it now the arguments are right.
203 static int nargc = argc;
204
205 sipCpp = new sipQgsApplication( nargc, argv, a1, *a2, *a3 );
206
207 // Now modify the original list.
208 qtgui_UpdatePyArgv( a0, argc, argv );
209 }
210 % End
211#endif
212
213 ~QgsApplication() override;
214
219 static QgsApplication *instance();
220
228 static void init( QString profileFolder = QString() ) SIP_SKIP;
229
231 bool event( QEvent *event ) override;
232
234 bool notify( QObject *receiver, QEvent *event ) override;
235
237 static void setFileOpenEventReceiver( QObject *receiver );
238
249 static void setThemeName( const QString &themeName );
250
255 static QString resolvePkgPath();
256
264 static QString themeName();
265
273 static void setUITheme( const QString &themeName );
274
281 static QHash<QString, QString> uiThemes();
282
284 static QString authorsFilePath();
285
291 static QString contributorsFilePath();
292
298 static QString developersMapFilePath();
299
301 static QString sponsorsFilePath();
302
304 static QString donorsFilePath();
305
307 static QString serverResourcesPath();
308
312 static QString translatorsFilePath();
313
317 static QString licenceFilePath();
318
320 static QString i18nPath();
321
325 static QString metadataPath();
326
328 static QString qgisMasterDatabaseFilePath();
329
331 static QString qgisSettingsDirPath();
332
334 static QString qgisUserDatabaseFilePath();
335
337 static QString qgisAuthDatabaseFilePath();
338
340 static QString splashPath();
341
343 static QString iconsPath();
344
346 static QString srsDatabaseFilePath();
347
353 static void setSvgPaths( const QStringList &svgPaths );
354
356 static QStringList svgPaths();
357
361 static QStringList layoutTemplatePaths();
362
364 static QMap<QString, QString> systemEnvVars();
365
367 static QString prefixPath();
368
370 static QString pluginPath();
371
373 static QString pkgDataPath();
374
376 static QString activeThemePath();
377
379 static QString defaultThemePath();
380
385 static QString iconPath( const QString &iconFile );
386
394 static QIcon getThemeIcon( const QString &name, const QColor &fillColor = QColor(), const QColor &strokeColor = QColor() );
395
410
417 static QCursor getThemeCursor( Cursor cursor );
418
427 static QPixmap getThemePixmap( const QString &name, const QColor &foreColor = QColor(), const QColor &backColor = QColor(), int size = 16 );
428
430 static QString userStylePath();
431
437 static QRegularExpression shortNameRegularExpression();
438
443 static QString userLoginName();
444
449 static QString userFullName();
450
455 static QString osName();
456
464 static int systemMemorySizeMb();
465
470 static QString platform();
471
472
484 static QString applicationFullName();
485
489 static QString locale();
490
497 static void setLocale( const QLocale &locale );
498
500 static QString userThemesFolder();
501
503 static QString defaultStylePath();
504
506 static QString defaultThemesFolder();
507
509 static QString libraryPath();
510
512 static QString libexecPath();
513
520 static QString qmlImportPath();
521
523 static void setPrefixPath( const QString &prefixPath, bool useDefaultPaths = false );
524
526 static void setPluginPath( const QString &pluginPath );
527
529 static void setPkgDataPath( const QString &pkgDataPath );
530
532 static void setDefaultSvgPaths( const QStringList &pathList );
533
535 static void setAuthDatabaseDirPath( const QString &authDbDirPath );
536
538 static void initQgis();
539
541 static bool createDatabase( QString *errorMessage = nullptr );
542
544 static bool createThemeFolder();
545
547 static void exitQgis();
548
550 static QString appIconPath();
551
554 {
555 XDR = 0, // network, or big-endian, byte order
556 NDR = 1 // little-endian byte order
557 };
558
560 static endian_t endian();
561
576 static QString reportStyleSheet( QgsApplication::StyleSheetType styleSheetType = QgsApplication::StyleSheetType::Qt );
577
582 static QString showSettings();
583
591 static void registerOgrDrivers();
592
594 static QString absolutePathToRelativePath( const QString &apath, const QString &targetPath );
596 static QString relativePathToAbsolutePath( const QString &rpath, const QString &targetPath );
597
599 static bool isRunningFromBuildDir() { return ABISYM( mRunningFromBuildDir ); }
600#if defined(_MSC_VER) && !defined(USING_NMAKE) && !defined(USING_NINJA)
601 static QString cfgIntDir() SIP_SKIP;
602#endif
604 static QString buildSourcePath();
606 static QString buildOutputPath();
607
613 static void skipGdalDriver( const QString &driver );
614
620 static void restoreGdalDriver( const QString &driver );
621
626 static QStringList skippedGdalDrivers();
627
634 static void applyGdalSkippedDrivers();
635
640 static void registerGdalDriversFromSettings();
641
648 static QStringList deferredSkippedGdalDrivers();
649
656 static void setSkippedGdalDrivers( const QStringList &skippedGdalDrivers,
657 const QStringList &deferredSkippedGdalDrivers );
658
662 static int maxThreads();
663
668 static void setMaxThreads( int maxThreads );
669
674 static QgsTaskManager *taskManager();
675
681 Q_DECL_DEPRECATED static QgsSettingsRegistryCore *settingsRegistryCore() SIP_KEEPREFERENCE SIP_DEPRECATED;
682
686 static QgsColorSchemeRegistry *colorSchemeRegistry() SIP_KEEPREFERENCE;
687
691 static QgsPaintEffectRegistry *paintEffectRegistry() SIP_KEEPREFERENCE;
692
696 static QgsRendererRegistry *rendererRegistry() SIP_KEEPREFERENCE;
697
702 static QgsRasterRendererRegistry *rasterRendererRegistry() SIP_SKIP;
703
708 static QgsPointCloudRendererRegistry *pointCloudRendererRegistry() SIP_KEEPREFERENCE;
709
714 static QgsTiledSceneRendererRegistry *tiledSceneRendererRegistry() SIP_KEEPREFERENCE;
715
720 static QgsDataItemProviderRegistry *dataItemProviderRegistry() SIP_KEEPREFERENCE;
721
728 static QgsCoordinateReferenceSystemRegistry *coordinateReferenceSystemRegistry() SIP_KEEPREFERENCE;
729
736 static QgsSvgCache *svgCache();
737
744 static QgsImageCache *imageCache();
745
751 static QgsSourceCache *sourceCache();
752
757 static QgsNetworkContentFetcherRegistry *networkContentFetcherRegistry() SIP_KEEPREFERENCE;
758
763 static QgsValidityCheckRegistry *validityCheckRegistry() SIP_KEEPREFERENCE;
764
768 static QgsSymbolLayerRegistry *symbolLayerRegistry() SIP_KEEPREFERENCE;
769
774 static QgsCalloutRegistry *calloutRegistry() SIP_KEEPREFERENCE;
775
779 static QgsLayoutItemRegistry *layoutItemRegistry() SIP_KEEPREFERENCE;
780
785 static QgsAnnotationItemRegistry *annotationItemRegistry() SIP_KEEPREFERENCE;
786
790 static QgsGpsConnectionRegistry *gpsConnectionRegistry() SIP_KEEPREFERENCE;
791
796 static QgsBabelFormatRegistry *gpsBabelFormatRegistry() SIP_KEEPREFERENCE;
797
801 static QgsPluginLayerRegistry *pluginLayerRegistry() SIP_KEEPREFERENCE;
802
807 static QgsClassificationMethodRegistry *classificationMethodRegistry() SIP_KEEPREFERENCE;
808
813 static QgsBookmarkManager *bookmarkManager();
814
820 static QgsTileDownloadManager *tileDownloadManager() SIP_SKIP;
821
826 static QgsRecentStyleHandler *recentStyleHandler() SIP_KEEPREFERENCE;
827
833 static QgsDatabaseQueryLog *databaseQueryLog() SIP_KEEPREFERENCE;
834
842 static QgsStyleModel *defaultStyleModel();
843
849 static QgsFontManager *fontManager() SIP_KEEPREFERENCE;
850
855 static QgsSensorRegistry *sensorRegistry() SIP_KEEPREFERENCE;
856
860 static QgsMessageLog *messageLog();
861
867 static QgsAuthManager *authManager();
868
873 static QgsProcessingRegistry *processingRegistry();
874
878 static QgsPageSizeRegistry *pageSizeRegistry() SIP_KEEPREFERENCE;
879
884 static QgsAnnotationRegistry *annotationRegistry() SIP_SKIP;
885
890 static QgsActionScopeRegistry *actionScopeRegistry() SIP_KEEPREFERENCE;
891
896 static QgsConnectionRegistry *connectionRegistry();
897
901 static QgsRuntimeProfiler *profiler();
902
908 static QgsNumericFormatRegistry *numericFormatRegistry() SIP_KEEPREFERENCE;
909
913 static QgsFieldFormatterRegistry *fieldFormatterRegistry() SIP_KEEPREFERENCE;
914
918 static Qgs3DRendererRegistry *renderer3DRegistry() SIP_KEEPREFERENCE;
919
924 static Qgs3DSymbolRegistry *symbol3DRegistry() SIP_KEEPREFERENCE;
925
931 static QgsScaleBarRendererRegistry *scaleBarRendererRegistry() SIP_KEEPREFERENCE;
932
937 static QgsProjectStorageRegistry *projectStorageRegistry() SIP_KEEPREFERENCE;
938
943 static QgsLayerMetadataProviderRegistry *layerMetadataProviderRegistry() SIP_KEEPREFERENCE;
944
949 static QgsExternalStorageRegistry *externalStorageRegistry() SIP_KEEPREFERENCE;
950
955 static QgsProfileSourceRegistry *profileSourceRegistry() SIP_KEEPREFERENCE;
956
964 static QgsLocalizedDataPathRegistry *localizedDataPathRegistry() SIP_KEEPREFERENCE;
965
974 static QString nullRepresentation();
975
979 static void setNullRepresentation( const QString &nullRepresentation );
980
987 static QVariantMap customVariables();
988
995 static void setCustomVariables( const QVariantMap &customVariables );
996
1001 static void setCustomVariable( const QString &name, const QVariant &value );
1002
1012 static int scaleIconSize( int standardSize, bool applyDevicePixelRatio = false );
1013
1022 int maxConcurrentConnectionsPerPool() const;
1023
1029 static void setTranslation( const QString &translation );
1030
1036 QString translation() const;
1037
1043 void collectTranslatableObjects( QgsTranslationContext *translationContext );
1044
1045
1046#ifndef SIP_RUN
1057#endif
1058
1059#ifdef SIP_RUN
1060 SIP_IF_FEATURE( ANDROID )
1061 //dummy method to workaround sip generation issue
1062 bool x11EventFilter( XEvent *event );
1063 SIP_END
1064#endif
1065
1066 signals:
1068 void preNotify( QObject *receiver, QEvent *event, bool *done ) SIP_SKIP;
1069
1074
1075
1080
1088
1089
1096
1097
1098 private:
1099
1100 static void copyPath( const QString &src, const QString &dst );
1101 static QObject *ABISYM( mFileOpenEventReceiver );
1102
1103 static bool ABISYM( mInitialized );
1104
1106 static bool ABISYM( mRunningFromBuildDir );
1107
1110 static int ABISYM( sMaxThreads );
1111
1112 QMap<QString, QIcon> mIconCache;
1113 QMap<Cursor, QCursor> mCursorCache;
1114
1115 QTranslator *mQgisTranslator = nullptr;
1116 QTranslator *mQtTranslator = nullptr;
1117 QTranslator *mQtBaseTranslator = nullptr;
1118
1119 QgsDataItemProviderRegistry *mDataItemProviderRegistry = nullptr;
1120 QgsAuthManager *mAuthManager = nullptr;
1121
1122 struct ApplicationMembers
1123 {
1124 QgsSettingsRegistryCore *mSettingsRegistryCore = nullptr;
1125 QgsCoordinateReferenceSystemRegistry *mCrsRegistry = nullptr;
1126 Qgs3DRendererRegistry *m3DRendererRegistry = nullptr;
1127 Qgs3DSymbolRegistry *m3DSymbolRegistry = nullptr;
1128 QgsActionScopeRegistry *mActionScopeRegistry = nullptr;
1129 QgsAnnotationRegistry *mAnnotationRegistry = nullptr;
1130 QgsColorSchemeRegistry *mColorSchemeRegistry = nullptr;
1131 QgsLocalizedDataPathRegistry *mLocalizedDataPathRegistry = nullptr;
1132 QgsNumericFormatRegistry *mNumericFormatRegistry = nullptr;
1133 QgsFieldFormatterRegistry *mFieldFormatterRegistry = nullptr;
1134 QgsGpsConnectionRegistry *mGpsConnectionRegistry = nullptr;
1135 QgsBabelFormatRegistry *mGpsBabelFormatRegistry = nullptr;
1136 QgsNetworkContentFetcherRegistry *mNetworkContentFetcherRegistry = nullptr;
1137 QgsScaleBarRendererRegistry *mScaleBarRendererRegistry = nullptr;
1138 QgsValidityCheckRegistry *mValidityCheckRegistry = nullptr;
1139 QgsMessageLog *mMessageLog = nullptr;
1140 QgsPaintEffectRegistry *mPaintEffectRegistry = nullptr;
1141 QgsPluginLayerRegistry *mPluginLayerRegistry = nullptr;
1142 QgsClassificationMethodRegistry *mClassificationMethodRegistry = nullptr;
1143 QgsProcessingRegistry *mProcessingRegistry = nullptr;
1144 QgsConnectionRegistry *mConnectionRegistry = nullptr;
1145 QgsProjectStorageRegistry *mProjectStorageRegistry = nullptr;
1146 QgsLayerMetadataProviderRegistry *mLayerMetadataProviderRegistry = nullptr;
1147 QgsExternalStorageRegistry *mExternalStorageRegistry = nullptr;
1148 QgsProfileSourceRegistry *mProfileSourceRegistry = nullptr;
1149 QgsPageSizeRegistry *mPageSizeRegistry = nullptr;
1150 QgsRasterRendererRegistry *mRasterRendererRegistry = nullptr;
1151 QgsRendererRegistry *mRendererRegistry = nullptr;
1152 QgsPointCloudRendererRegistry *mPointCloudRendererRegistry = nullptr;
1153 QgsTiledSceneRendererRegistry *mTiledSceneRendererRegistry = nullptr;
1154 QgsSvgCache *mSvgCache = nullptr;
1155 QgsImageCache *mImageCache = nullptr;
1156 QgsSourceCache *mSourceCache = nullptr;
1157 QgsSymbolLayerRegistry *mSymbolLayerRegistry = nullptr;
1158 QgsCalloutRegistry *mCalloutRegistry = nullptr;
1159 QgsTaskManager *mTaskManager = nullptr;
1160 QgsLayoutItemRegistry *mLayoutItemRegistry = nullptr;
1161 QgsAnnotationItemRegistry *mAnnotationItemRegistry = nullptr;
1162 QgsSensorRegistry *mSensorRegistry = nullptr;
1163 QgsUserProfileManager *mUserConfigManager = nullptr;
1164 QgsBookmarkManager *mBookmarkManager = nullptr;
1165 QgsTileDownloadManager *mTileDownloadManager = nullptr;
1166 QgsStyleModel *mStyleModel = nullptr;
1167 QgsRecentStyleHandler *mRecentStyleHandler = nullptr;
1168 QgsDatabaseQueryLog *mQueryLogger = nullptr;
1169 QgsFontManager *mFontManager;
1170 QString mNullRepresentation;
1171 QStringList mSvgPathCache;
1172 bool mSvgPathCacheValid = false;
1173
1174 ApplicationMembers();
1175 ~ApplicationMembers();
1176 };
1177
1178 // Applications members which belong to an instance of QgsApplication
1179 ApplicationMembers *mApplicationMembers = nullptr;
1180 // ... but in case QgsApplication is never instantiated (eg with custom designer widgets), we fall back to static members
1181 static ApplicationMembers *sApplicationMembers;
1182
1183 static QgsAuthManager *sAuthManager;
1184
1185 static ApplicationMembers *members();
1186
1187 static void invalidateCaches();
1188
1193 void installTranslators() SIP_SKIP;
1194
1195 friend class TestQgsApplication;
1196};
1197
1198// clazy:excludeall=qstring-allocations
1199
1200#endif
Keeps track of available 3D renderers.
Registry of available 3D symbol classes.
The action scope registry is an application wide registry that contains a list of available action sc...
Registry of available annotation item types.
Extends QApplication to provide access to QGIS specific resources such as theme paths,...
endian_t
Constants for endian-ness.
static const QgsSettingsEntryStringList * settingsSearchPathsForSVG
Settings entry search path for SVG.
static const QgsSettingsEntryBool * settingsLocaleOverrideFlag
Settings entry locale override flag.
void customVariablesChanged()
Emitted whenever a custom global variable changes.
StyleSheetType
The StyleSheetType enum represents the stylesheet type that a widget supports.
@ WebBrowser
StyleSheet for Qt GUI widgets (based on QLabel or QTextBrowser), supports basic CSS and Qt extensions...
static const QgsSettingsEntryString * settingsLocaleGlobalLocale
Settings entry locale global locale.
static const QgsSettingsEntryString * settingsLocaleUserLocale
Settings entry locale user locale.
static const char * QGIS_APPLICATION_NAME
static const char * QGIS_ORGANIZATION_DOMAIN
void preNotify(QObject *receiver, QEvent *event, bool *done)
void localeChanged()
Emitted when project locale has been changed.
static const char * QGIS_ORGANIZATION_NAME
Cursor
The Cursor enum defines constants for QGIS custom cursors.
@ ZoomOut
Zoom out.
@ CrossHair
Precisely identify a point on the canvas.
@ Identify
Identify: obtain information about the object.
@ Select
Select a rectangle.
@ CapturePoint
Select and capture a point or a feature.
@ Sampler
Color/Value picker.
void requestForTranslatableObjects(QgsTranslationContext *translationContext)
Emitted when project strings which require translation are being collected for inclusion in a ....
void nullRepresentationChanged()
This string is used to represent the value NULL throughout QGIS.
static const QgsSettingsEntryBool * settingsLocaleShowGroupSeparator
Settings entry locale show group separator.
static bool isRunningFromBuildDir()
Indicates whether running from build directory (not installed)
Singleton offering an interface to manage the authentication configuration database and to utilize co...
A registry for QgsAbstractBabelFormat GPSBabel formats.
Manages storage of a set of bookmarks.
Registry of available callout classes.
This class manages all known classification methods.
Registry of color schemes.
A registry for saved data provider connections, allowing retrieval of saved connections by name and p...
A registry for known coordinate reference system (CRS) definitions, including any user-defined CRSes.
This class keeps a list of data item providers that may add items to the browser tree.
Handles logging of database queries.
Registry of external storage backends used by QgsExternalResourceWidget.
The QgsFieldFormatterRegistry manages registered classes of QgsFieldFormatter.
Manages available fonts and font installation for a QGIS instance.
A class to register / unregister existing GPS connections such that the information is available to a...
A cache for images derived from raster files.
Registry of layer metadata provider backends.
Registry of available layout item types.
A registry class to hold localized data paths which can be used for basemaps, logos,...
Interface for logging messages from QGIS in GUI independent way.
Registry for temporary fetched files.
The QgsNumericFormatRegistry manages registered classes of QgsNumericFormat.
A registry for known page sizes.
Registry of available paint effects.
A registry of plugin layers types.
Registry of 2D renderers for point clouds.
Registry for various processing components, including providers, algorithms and various parameters an...
Registry of profile sources used by QgsProfilePlotRenderer.
Registry of storage backends that QgsProject may use.
Registry for raster renderers.
Handles and tracks style items recently used in the QGIS GUI.
Registry of renderers.
Provides a method of recording run time profiles of operations, allowing easy recording of their over...
The QgsScaleBarRendererRegistry manages registered scalebar renderers.
Registry of available sensor types.
A boolean settings entry.
A string list settings entry.
A string settings entry.
QgsSettingsRegistryCore is used for settings introspection and collects all QgsSettingsEntry instance...
A cache for source strings that returns a local file path containing the source content.
A QAbstractItemModel subclass for showing symbol and color ramp entities contained within a QgsStyle ...
A cache for images / pictures derived from SVG files.
Registry of available symbol layer classes.
Task manager for managing a set of long-running QgsTask tasks.
Tile download manager handles downloads of map tiles for the purpose of map rendering.
Registry of 2D renderers for tiled scenes.
Used for the collecting of strings from projects for translation and creation of ts files.
User profile manager is used to manager list, and manage user profiles on the users machine.
User profile contains information about the user profile folders on the machine.
This class keeps a list of QgsAbstractValidityCheck checks which can be used when performing validity...
#define SIP_DEPRECATED
Definition qgis_sip.h:106
#define SIP_KEEPREFERENCE
Definition qgis_sip.h:86
#define SIP_SKIP
Definition qgis_sip.h:126
#define SIP_IF_FEATURE(feature)
Definition qgis_sip.h:181
#define SIP_END
Definition qgis_sip.h:208
QObject * ABISYM(QgsApplication::mFileOpenEventReceiver)