2016-01-08 21:31:41 +01:00
|
|
|
# -*- coding: utf-8 -*-
|
|
|
|
|
|
|
|
"""
|
|
|
|
***************************************************************************
|
|
|
|
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'
|
|
|
|
|
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
|
|
|
|
|
fix python pep8 warnings and fix some revealed errors
pep8 --ignore=E111,E128,E201,E202,E203,E211,E221,E222,E225,E226,E227,E231,E241,E261,E265,E272,E302,E303,E501,E701 \
--exclude="ui_*.py,debian/*,python/ext-libs/*" \
.
2015-02-01 14:15:42 +01:00
|
|
|
with qgisapp(sys.argv) as app:
|
|
|
|
main(app)
|
2014-05-20 17:02:35 +10:00
|
|
|
|
|
|
|
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)
|