2014-05-20 17:02:35 +10:00
|
|
|
import sys
|
|
|
|
from contextlib import contextmanager
|
|
|
|
from qgis.core import QgsApplication
|
|
|
|
|
|
|
|
|
|
|
|
@contextmanager
|
|
|
|
def qgisapp(args=None, guienabled=True, configpath=None, sysexit=True):
|
|
|
|
"""
|
2014-05-21 21:25:18 +02:00
|
|
|
Create a new QGIS Qt application.
|
|
|
|
|
2014-05-20 17:02:35 +10:00
|
|
|
You should use this before creating any Qt widgets or QGIS objects for
|
|
|
|
your custom QGIS based application.
|
2014-05-21 21:25:18 +02:00
|
|
|
|
2014-05-20 17:02:35 +10:00
|
|
|
usage:
|
|
|
|
from qgis.core.contextmanagers import qgisapp
|
|
|
|
|
|
|
|
def main(app):
|
|
|
|
# Run your main code block
|
|
|
|
|
|
|
|
with qgisapp(sys.argv) as app:
|
|
|
|
main(app)
|
|
|
|
|
|
|
|
|
|
|
|
args - args passed to the underlying QApplication.
|
|
|
|
guienabled - True by default will create a QApplication with a GUI. Pass
|
|
|
|
False if you wish to create no GUI based app, e.g a server app.
|
|
|
|
configpath - Custom config path QGIS will use to load settings.
|
|
|
|
sysexit - Call sys.exit on app exit. True by default.
|
|
|
|
"""
|
|
|
|
if not args:
|
|
|
|
args = []
|
|
|
|
app = QgsApplication(args, guienabled, configpath)
|
|
|
|
QgsApplication.initQgis()
|
|
|
|
yield app
|
|
|
|
if guienabled:
|
|
|
|
exitcode = app.exec_()
|
|
|
|
else:
|
|
|
|
exitcode = 0
|
|
|
|
QgsApplication.exitQgis()
|
|
|
|
if sysexit:
|
|
|
|
sys.exit(exitcode)
|