mirror of
https://github.com/qgis/QGIS.git
synced 2025-02-23 00:02:38 -05:00
62 lines
2.1 KiB
Python
62 lines
2.1 KiB
Python
"""
|
|
***************************************************************************
|
|
contextmanagers.py
|
|
---------------------
|
|
Date : May 2014
|
|
Copyright : (C) 2014 by Nathan Woodrow
|
|
Email : woodrow dot nathan at gmail dot com
|
|
***************************************************************************
|
|
* *
|
|
* This program is free software; you can redistribute it and/or modify *
|
|
* it under the terms of the GNU General Public License as published by *
|
|
* the Free Software Foundation; either version 2 of the License, or *
|
|
* (at your option) any later version. *
|
|
* *
|
|
***************************************************************************
|
|
"""
|
|
|
|
__author__ = "Nathan Woodrow"
|
|
__date__ = "May 2014"
|
|
__copyright__ = "(C) 2014, Nathan Woodrow"
|
|
|
|
import sys
|
|
from contextlib import contextmanager
|
|
from qgis.core import QgsApplication
|
|
|
|
|
|
@contextmanager
|
|
def qgisapp(args=None, guienabled=True, configpath=None, sysexit=True):
|
|
"""
|
|
Create a new QGIS Qt application.
|
|
|
|
You should use this before creating any Qt widgets or QGIS objects for
|
|
your custom QGIS based application.
|
|
|
|
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)
|