Coverage for C:\Program Files\QGIS 3.10\apps\qgis-ltr\python\qgis\core\additions\qgstaskwrapper.py: 21%
29 statements
« prev ^ index » next coverage.py v7.2.3, created at 2023-04-10 14:40 +0900
« prev ^ index » next coverage.py v7.2.3, created at 2023-04-10 14:40 +0900
1# -*- coding: utf-8 -*-
3"""
4***************************************************************************
5 qgstaskwrapper.py
6 ---------------------
7 Date : May 2018
8 Copyright : (C) 2018 by Denis Rouzaud
9 Email : denis@opengis.ch
10***************************************************************************
11* *
12* This program is free software; you can redistribute it and/or modify *
13* it under the terms of the GNU General Public License as published by *
14* the Free Software Foundation; either version 2 of the License, or *
15* (at your option) any later version. *
16* *
17***************************************************************************
18"""
21from qgis._core import QgsTask
24class QgsTaskWrapper(QgsTask):
26 def __init__(self, description, flags, function, on_finished, *args, **kwargs):
27 QgsTask.__init__(self, description, flags)
28 self.args = args
29 self.kwargs = kwargs
30 self.function = function
31 self.on_finished = on_finished
32 self.returned_values = None
33 self.exception = None
35 def run(self):
36 try:
37 self.returned_values = self.function(self, *self.args, **self.kwargs)
38 except Exception as ex:
39 # report error
40 self.exception = ex
41 return False
43 return True
45 def finished(self, result):
46 if not self.on_finished:
47 return
49 if not result and self.exception is None:
50 self.exception = Exception('Task canceled')
52 try:
53 if self.returned_values:
54 self.on_finished(self.exception, self.returned_values)
55 else:
56 self.on_finished(self.exception)
57 except Exception as ex:
58 self.exception = ex