62 lines
1.8 KiB
Python
62 lines
1.8 KiB
Python
# coding=utf-8
|
|
"""Common functionality used by regression tests."""
|
|
|
|
import sys
|
|
import logging
|
|
|
|
|
|
LOGGER = logging.getLogger('QGIS')
|
|
QGIS_APP = None # Static variable used to hold hand to running QGIS app
|
|
CANVAS = None
|
|
PARENT = None
|
|
IFACE = None
|
|
|
|
|
|
def get_qgis_app():
|
|
""" Start one QGIS application to test against.
|
|
|
|
:returns: Handle to QGIS app, canvas, iface and parent. If there are any
|
|
errors the tuple members will be returned as None.
|
|
:rtype: (QgsApplication, CANVAS, IFACE, PARENT)
|
|
|
|
If QGIS is already running the handle to that app will be returned.
|
|
"""
|
|
|
|
try:
|
|
from qgis.PyQt import QtGui, QtCore
|
|
from qgis.core import QgsApplication
|
|
from qgis.gui import QgsMapCanvas
|
|
from .qgis_interface import QgisInterface
|
|
except ImportError:
|
|
return None, None, None, None
|
|
|
|
global QGIS_APP # pylint: disable=W0603
|
|
|
|
if QGIS_APP is None:
|
|
gui_flag = True # All test will run qgis in gui mode
|
|
#noinspection PyPep8Naming
|
|
QGIS_APP = QgsApplication(sys.argv, gui_flag)
|
|
# Make sure QGIS_PREFIX_PATH is set in your env if needed!
|
|
QGIS_APP.initQgis()
|
|
s = QGIS_APP.showSettings()
|
|
LOGGER.debug(s)
|
|
|
|
global PARENT # pylint: disable=W0603
|
|
if PARENT is None:
|
|
#noinspection PyPep8Naming
|
|
PARENT = QtGui.QWidget()
|
|
|
|
global CANVAS # pylint: disable=W0603
|
|
if CANVAS is None:
|
|
#noinspection PyPep8Naming
|
|
CANVAS = QgsMapCanvas(PARENT)
|
|
CANVAS.resize(QtCore.QSize(400, 400))
|
|
|
|
global IFACE # pylint: disable=W0603
|
|
if IFACE is None:
|
|
# QgisInterface is a stub implementation of the QGIS plugin interface
|
|
#noinspection PyPep8Naming
|
|
IFACE = QgisInterface(CANVAS)
|
|
|
|
return QGIS_APP, CANVAS, IFACE, PARENT
|