From cc7eb27a2720466e79eeff017be9c9de9daa145f Mon Sep 17 00:00:00 2001 From: Alexander Bruy Date: Fri, 27 May 2016 19:04:25 +0300 Subject: [PATCH] [processing] drop WebView dependency (follow up 38f6ace4c0) --- .../ProcessingExampleScriptsPlugin.py | 3 +- .../examplescripts/scripts/examplescript.py | 2 +- .../algs/grass/GrassAlgorithmProvider.py | 4 +- .../plugins/processing/algs/otb/OTBUtils.py | 2 +- .../algs/qgis/QGISAlgorithmProvider.py | 4 +- .../plugins/processing/algs/saga/SagaUtils.py | 2 +- python/plugins/processing/core/Processing.py | 14 +- python/plugins/processing/core/alglist.py | 3 +- .../processing/core/defaultproviders.py | 1 - .../processing/gui/AlgorithmDialogBase.py | 31 ++-- .../processing/gui/DeleteScriptAction.py | 1 + .../processing/gui/EditScriptAction.py | 1 + .../processing/gui/GetScriptsAndModels.py | 8 +- .../processing/gui/HelpEditionDialog.py | 5 +- .../plugins/processing/gui/ResultsDialog.py | 13 +- .../processing/modeler/DeleteModelAction.py | 1 + .../processing/modeler/EditModelAction.py | 1 + .../modeler/ModelerParametersDialog.py | 55 ++++--- .../DeletePreconfiguredAlgorithmAction.py | 1 + .../plugins/processing/ui/DlgAlgorithmBase.ui | 18 +-- .../processing/ui/DlgGetScriptsAndModels.ui | 149 ++++++------------ .../plugins/processing/ui/DlgHelpEdition.ui | 17 +- python/plugins/processing/ui/DlgResults.ui | 33 +--- 23 files changed, 147 insertions(+), 222 deletions(-) diff --git a/python/plugins/processing/algs/examplescripts/ProcessingExampleScriptsPlugin.py b/python/plugins/processing/algs/examplescripts/ProcessingExampleScriptsPlugin.py index 9b6c18ceb017..0ef69fc112d0 100644 --- a/python/plugins/processing/algs/examplescripts/ProcessingExampleScriptsPlugin.py +++ b/python/plugins/processing/algs/examplescripts/ProcessingExampleScriptsPlugin.py @@ -29,10 +29,11 @@ from processing.core.Processing import Processing + class ProcessingExampleScriptsPlugin: def initGui(self): Processing.addScripts(os.path.join(os.path.dirname(__file__), "scripts")) - + def unload(self): Processing.removeScripts(os.path.join(os.path.dirname(__file__), "scripts")) diff --git a/python/plugins/processing/algs/examplescripts/scripts/examplescript.py b/python/plugins/processing/algs/examplescripts/scripts/examplescript.py index 2832f78697f8..133809d2d74e 100644 --- a/python/plugins/processing/algs/examplescripts/scripts/examplescript.py +++ b/python/plugins/processing/algs/examplescripts/scripts/examplescript.py @@ -1,3 +1,3 @@ ##text=string -print text \ No newline at end of file +print text diff --git a/python/plugins/processing/algs/grass/GrassAlgorithmProvider.py b/python/plugins/processing/algs/grass/GrassAlgorithmProvider.py index ab1d3619c3e0..82b2053f168a 100644 --- a/python/plugins/processing/algs/grass/GrassAlgorithmProvider.py +++ b/python/plugins/processing/algs/grass/GrassAlgorithmProvider.py @@ -55,8 +55,8 @@ def initializeSettings(self): GrassUtils.grassPath(), valuetype=Setting.FOLDER)) if isWindows(): ProcessingConfig.addSetting(Setting(self.getDescription(), - GrassUtils.GRASS_WIN_SHELL, self.tr('Msys folder'), - GrassUtils.grassWinShell(), valuetype=Setting.FOLDER)) + GrassUtils.GRASS_WIN_SHELL, self.tr('Msys folder'), + GrassUtils.grassWinShell(), valuetype=Setting.FOLDER)) ProcessingConfig.addSetting(Setting(self.getDescription(), GrassUtils.GRASS_LOG_COMMANDS, self.tr('Log execution commands'), False)) diff --git a/python/plugins/processing/algs/otb/OTBUtils.py b/python/plugins/processing/algs/otb/OTBUtils.py index 181fc1c74432..2a3ea2173a62 100644 --- a/python/plugins/processing/algs/otb/OTBUtils.py +++ b/python/plugins/processing/algs/otb/OTBUtils.py @@ -161,7 +161,7 @@ def executeOtb(commands, progress, addToLog=True): os.putenv('ITK_AUTOLOAD_PATH', otbLibPath()) fused_command = ''.join(['"%s" ' % re.sub(r'^"|"$', '', c) for c in commands]) proc = subprocess.Popen(fused_command, shell=True, stdout=subprocess.PIPE, stdin=open(os.devnull), stderr=subprocess.STDOUT, universal_newlines=True).stdout - if isMac(): #This trick avoids having an uninterrupted system call exception if OTB is not installed + if isMac(): # This trick avoids having an uninterrupted system call exception if OTB is not installed time.sleep(1) for line in iter(proc.readline, ""): if "[*" in line: diff --git a/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py b/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py index 8fcad91d5d69..b802f6c5529d 100644 --- a/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py +++ b/python/plugins/processing/algs/qgis/QGISAlgorithmProvider.py @@ -222,8 +222,8 @@ def __init__(self): from .ExecuteSQL import ExecuteSQL self.alglist.extend([ExecuteSQL()]) - self.externalAlgs = [] #to store algs added by 3rd party plugins as scripts - + self.externalAlgs = [] # to store algs added by 3rd party plugins as scripts + folder = os.path.join(os.path.dirname(__file__), 'scripts') scripts = ScriptUtils.loadFromFolder(folder) for script in scripts: diff --git a/python/plugins/processing/algs/saga/SagaUtils.py b/python/plugins/processing/algs/saga/SagaUtils.py index f9801bce6fc1..5e97906358b4 100644 --- a/python/plugins/processing/algs/saga/SagaUtils.py +++ b/python/plugins/processing/algs/saga/SagaUtils.py @@ -134,7 +134,7 @@ def getSagaInstalledVersion(runSaga=False): stderr=subprocess.STDOUT, universal_newlines=True, ).stdout - if isMac(): #This trick avoids having an uninterrupted system call exception if SAGA is not installed + if isMac(): # This trick avoids having an uninterrupted system call exception if SAGA is not installed time.sleep(1) try: lines = proc.readlines() diff --git a/python/plugins/processing/core/Processing.py b/python/plugins/processing/core/Processing.py index 6a0efc891961..bf7a1983e0ff 100644 --- a/python/plugins/processing/core/Processing.py +++ b/python/plugins/processing/core/Processing.py @@ -64,11 +64,11 @@ from processing.algs.taudem.TauDEMAlgorithmProvider import TauDEMAlgorithmProvider from processing.preconfigured.PreconfiguredAlgorithmProvider import PreconfiguredAlgorithmProvider + class Processing: providers = [] - # Same structure as algs in algList actions = {} @@ -134,8 +134,8 @@ def initialize(): ProcessingConfig.initialize() ProcessingConfig.readSettings() RenderingStyles.loadStyles() - - @staticmethod + + @staticmethod def addScripts(folder): Processing.initialize() provider = Processing.getProviderFromName("qgis") @@ -145,19 +145,17 @@ def addScripts(folder): script.allowEdit = False script._icon = provider._icon script.provider = provider - provider.externalAlgs.extend(scripts) + provider.externalAlgs.extend(scripts) Processing.reloadProvider("qgis") - - + @staticmethod def removeScripts(folder): provider = Processing.getProviderFromName("qgis") for alg in provider.externalAlgs[::-1]: path = os.path.dirname(alg.descriptionFile) if path == folder: - provider.externalAlgs.remove(alg) + provider.externalAlgs.remove(alg) Processing.reloadProvider("qgis") - @staticmethod def updateAlgsList(): diff --git a/python/plugins/processing/core/alglist.py b/python/plugins/processing/core/alglist.py index f0cb6eb7ca9d..0d651d5972f4 100644 --- a/python/plugins/processing/core/alglist.py +++ b/python/plugins/processing/core/alglist.py @@ -27,6 +27,7 @@ from qgis.PyQt.QtCore import QObject, pyqtSignal + class AlgorithmList(QObject): providerAdded = pyqtSignal(str) @@ -76,4 +77,4 @@ def getAlgorithmFromFullName(self, name): if alg.name == name: return alg -algList = AlgorithmList() \ No newline at end of file +algList = AlgorithmList() diff --git a/python/plugins/processing/core/defaultproviders.py b/python/plugins/processing/core/defaultproviders.py index 1aeba64324ec..688adecfaad8 100644 --- a/python/plugins/processing/core/defaultproviders.py +++ b/python/plugins/processing/core/defaultproviders.py @@ -26,7 +26,6 @@ __revision__ = '$Format:%H$' - def loadDefaultProviders(): # this is here just to "trigger" the above imports so providers are loaded # and can be found by the Processing.initialize() method diff --git a/python/plugins/processing/gui/AlgorithmDialogBase.py b/python/plugins/processing/gui/AlgorithmDialogBase.py index d64f289907c1..c4e02db5a48c 100644 --- a/python/plugins/processing/gui/AlgorithmDialogBase.py +++ b/python/plugins/processing/gui/AlgorithmDialogBase.py @@ -31,6 +31,7 @@ from qgis.PyQt import uic from qgis.PyQt.QtCore import QCoreApplication, QSettings, QByteArray, QUrl from qgis.PyQt.QtWidgets import QApplication, QDialogButtonBox, QDesktopWidget +from qgis.PyQt.QtNetwork import QNetworkRequest, QNetworkReply from qgis.utils import iface from qgis.core import QgsNetworkAccessManager @@ -63,9 +64,9 @@ def __init__(self, alg): self.setWindowTitle(self.alg.displayName()) - desktop = QDesktopWidget() - if desktop.physicalDpiX() > 96: - self.textHelp.setZoomFactor(desktop.physicalDpiX() / 96) + #~ desktop = QDesktopWidget() + #~ if desktop.physicalDpiX() > 96: + #~ self.txtHelp.setZoomFactor(desktop.physicalDpiX() / 96) algHelp = self.alg.shortHelp() if algHelp is None: @@ -83,20 +84,22 @@ def __init__(self, alg): def linkClicked(url): webbrowser.open(url.toString()) - self.textShortHelp.anchorClicked.connect(linkClicked) - self.textHelp.page().setNetworkAccessManager(QgsNetworkAccessManager.instance()) + self.textShortHelp.anchorClicked.connect(linkClicked) isText, algHelp = self.alg.help() if algHelp is not None: algHelp = algHelp if isText else QUrl(algHelp) try: if isText: - self.textHelp.setHtml(algHelp) + self.txtHelp.setHtml(algHelp) else: - self.textHelp.settings().clearMemoryCaches() - self.textHelp.load(algHelp) - except: + html = self.tr('

Downloading algorithm help... Please wait.

') + self.txtHelp.setHtml(html) + rq = QNetworkRequest(algHelp) + self.reply = QgsNetworkAccessManager.instance().get(rq) + self.reply.finished.connect(self.requestFinished) + except Exception, e: self.tabWidget.removeTab(2) else: self.tabWidget.removeTab(2) @@ -104,6 +107,16 @@ def linkClicked(url): self.showDebug = ProcessingConfig.getSetting( ProcessingConfig.SHOW_DEBUG_IN_DIALOG) + def requestFinished(self): + """Change the webview HTML content""" + reply = self.sender() + if reply.error() != QNetworkReply.NoError: + html = self.tr('

No help available for this algorithm

{}

'.format(reply.errorString())) + else: + html = unicode(reply.readAll()) + reply.deleteLater() + self.txtHelp.setHtml(html) + def closeEvent(self, evt): self.settings.setValue("/Processing/dialogBase", self.saveGeometry()) super(AlgorithmDialogBase, self).closeEvent(evt) diff --git a/python/plugins/processing/gui/DeleteScriptAction.py b/python/plugins/processing/gui/DeleteScriptAction.py index c220961ce92e..b14b0680e8bd 100644 --- a/python/plugins/processing/gui/DeleteScriptAction.py +++ b/python/plugins/processing/gui/DeleteScriptAction.py @@ -35,6 +35,7 @@ from processing.script.ScriptAlgorithm import ScriptAlgorithm from processing.core.alglist import algList + class DeleteScriptAction(ContextAction): SCRIPT_PYTHON = 0 diff --git a/python/plugins/processing/gui/EditScriptAction.py b/python/plugins/processing/gui/EditScriptAction.py index eeef6c93f7a0..400cebb104c3 100644 --- a/python/plugins/processing/gui/EditScriptAction.py +++ b/python/plugins/processing/gui/EditScriptAction.py @@ -31,6 +31,7 @@ from processing.script.ScriptAlgorithm import ScriptAlgorithm from processing.core.alglist import algList + class EditScriptAction(ContextAction): SCRIPT_PYTHON = 0 diff --git a/python/plugins/processing/gui/GetScriptsAndModels.py b/python/plugins/processing/gui/GetScriptsAndModels.py index f087deaedc5b..ab686e174b20 100644 --- a/python/plugins/processing/gui/GetScriptsAndModels.py +++ b/python/plugins/processing/gui/GetScriptsAndModels.py @@ -208,10 +208,10 @@ def treeLoaded(self, reply): self.tree.addTopLevelItem(self.notinstalledItem) self.tree.addTopLevelItem(self.uptodateItem) - self.webView.setHtml(self.HELP_TEXT) + self.txtHelp.setHtml(self.HELP_TEXT) def setHelp(self, reply, item): - """Change the webview HTML content""" + """Change the HTML content""" QApplication.restoreOverrideCursor() if reply.error() != QNetworkReply.NoError: html = self.tr('

No detailed description available for this script

') @@ -223,14 +223,14 @@ def setHelp(self, reply, item): html += self.tr('

Created by: %s') % getDescription(ALG_CREATOR, descriptions) html += self.tr('

Version: %s') % getDescription(ALG_VERSION, descriptions) reply.deleteLater() - self.webView.setHtml(html) + self.txtHelp.setHtml(html) def currentItemChanged(self, item, prev): if isinstance(item, TreeItem): url = self.urlBase + item.filename.replace(' ', '%20') + '.help' self.grabHTTP(url, self.setHelp, item) else: - self.webView.setHtml(self.HELP_TEXT) + self.txtHelp.setHtml(self.HELP_TEXT) def getTreeBranchForState(self, filename, version): if not os.path.exists(os.path.join(self.folder, filename)): diff --git a/python/plugins/processing/gui/HelpEditionDialog.py b/python/plugins/processing/gui/HelpEditionDialog.py index 80c372362b3b..e4babe4a3b15 100644 --- a/python/plugins/processing/gui/HelpEditionDialog.py +++ b/python/plugins/processing/gui/HelpEditionDialog.py @@ -16,8 +16,6 @@ * * *************************************************************************** """ -from processing.modeler.ModelerAlgorithm import ModelerAlgorithm - __author__ = 'Victor Olaya' __date__ = 'August 2012' @@ -34,6 +32,7 @@ from qgis.PyQt.QtWidgets import QDialog, QTreeWidgetItem from processing.core.ProcessingLog import ProcessingLog +from processing.modeler.ModelerAlgorithm import ModelerAlgorithm pluginPath = os.path.split(os.path.dirname(__file__))[0] WIDGET, BASE = uic.loadUiType( @@ -138,7 +137,7 @@ def changeItem(self): self.updateHtmlView() def updateHtmlView(self): - self.webView.setHtml(self.getHtml()) + self.txtPreview.setHtml(self.getHtml()) def getDescription(self, name): if name in self.descriptions: diff --git a/python/plugins/processing/gui/ResultsDialog.py b/python/plugins/processing/gui/ResultsDialog.py index a06404be25e6..1dde9665e65b 100644 --- a/python/plugins/processing/gui/ResultsDialog.py +++ b/python/plugins/processing/gui/ResultsDialog.py @@ -26,6 +26,7 @@ __revision__ = '$Format:%H$' import os +import codecs from qgis.PyQt import uic from qgis.PyQt.QtCore import QUrl @@ -53,7 +54,7 @@ def __init__(self): self.fillTree() if self.lastUrl: - self.webView.load(self.lastUrl) + self.txtResults.setHtml(self.loadResults(self.lastUrl)) def fillTree(self): elements = ProcessingResults.getResults() @@ -64,13 +65,17 @@ def fillTree(self): item = TreeResultItem(element) item.setIcon(0, self.keyIcon) self.tree.addTopLevelItem(item) - self.lastUrl = QUrl(elements[-1].filename) + self.lastUrl = elements[-1].filename def changeResult(self): item = self.tree.currentItem() if isinstance(item, TreeResultItem): - url = QUrl(item.filename) - self.webView.load(url) + self.txtResults.setHtml(self.loadResults(item.filename)) + + def loadResults(self, fileName): + with codecs.open(fileName, encoding='utf-8') as f: + content = f.read() + return content class TreeResultItem(QTreeWidgetItem): diff --git a/python/plugins/processing/modeler/DeleteModelAction.py b/python/plugins/processing/modeler/DeleteModelAction.py index 749f51ecac77..00579008516d 100644 --- a/python/plugins/processing/modeler/DeleteModelAction.py +++ b/python/plugins/processing/modeler/DeleteModelAction.py @@ -31,6 +31,7 @@ from processing.modeler.ModelerAlgorithm import ModelerAlgorithm from processing.core.alglist import algList + class DeleteModelAction(ContextAction): def __init__(self): diff --git a/python/plugins/processing/modeler/EditModelAction.py b/python/plugins/processing/modeler/EditModelAction.py index 42b5da06be1b..f89f203ebc52 100644 --- a/python/plugins/processing/modeler/EditModelAction.py +++ b/python/plugins/processing/modeler/EditModelAction.py @@ -30,6 +30,7 @@ from processing.modeler.ModelerDialog import ModelerDialog from processing.core.alglist import algList + class EditModelAction(ContextAction): def __init__(self): diff --git a/python/plugins/processing/modeler/ModelerParametersDialog.py b/python/plugins/processing/modeler/ModelerParametersDialog.py index a240ebb0664b..9f6cfb2a35ba 100644 --- a/python/plugins/processing/modeler/ModelerParametersDialog.py +++ b/python/plugins/processing/modeler/ModelerParametersDialog.py @@ -26,8 +26,13 @@ __revision__ = '$Format:%H$' from qgis.PyQt.QtCore import Qt, QUrl, QMetaObject -from qgis.PyQt.QtWidgets import QDialog, QDialogButtonBox, QLabel, QLineEdit, QFrame, QPushButton, QSizePolicy, QVBoxLayout, QHBoxLayout, QTabWidget, QWidget, QScrollArea, QComboBox, QTableWidgetItem, QMessageBox -from qgis.core import QgsWebView +from qgis.PyQt.QtWidgets import (QDialog, QDialogButtonBox, QLabel, QLineEdit, + QFrame, QPushButton, QSizePolicy, QVBoxLayout, + QHBoxLayout, QTabWidget, QWidget, QScrollArea, + QComboBox, QTableWidgetItem, QMessageBox) +from qgis.PyQt.QtNetwork import QNetworkRequest, QNetworkReply + +from qgis.core import QgsNetworkAccessManager from processing.gui.CrsSelectionPanel import CrsSelectionPanel from processing.gui.MultipleInputPanel import MultipleInputPanel @@ -194,27 +199,27 @@ def setupUi(self): self.scrollArea.setWidget(self.paramPanel) self.scrollArea.setWidgetResizable(True) self.tabWidget.addTab(self.scrollArea, self.tr('Parameters')) - self.webView = QgsWebView() + + self.txtHelp = QTextBrowser() html = None url = None - isText, help = self._alg.help() - if help is not None: - if isText: - html = help - else: - url = QUrl(help) - else: - html = self.tr('

Sorry, no help is available for this ' - 'algorithm.

') - try: - if html: - self.webView.setHtml(html) - elif url: - self.webView.load(url) - except: - self.webView.setHtml(self.tr('

Could not open help file :-(

')) - self.tabWidget.addTab(self.webView, 'Help') + isText, algHelp = self._alg.help() + if algHelp is not None: + algHelp = algHelp if isText else QUrl(algHelp) + try: + if isText: + self.txtHelp.setHtml(algHelp) + else: + html = self.tr('

Downloading algorithm help... Please wait.

') + self.txtHelp.setHtml(html) + self.reply = QgsNetworkAccessManager.instance().get(QNetworkRequest(algHelp)) + self.reply.finished.connect(self.requestFinished) + except: + self.txtHelp.setHtml(self.tr('

No help available for this algorithm

')) + + self.tabWidget.addTab(self.txtHelp, 'Help') + self.verticalLayout2.addWidget(self.tabWidget) self.verticalLayout2.addWidget(self.buttonBox) self.setLayout(self.verticalLayout2) @@ -222,6 +227,16 @@ def setupUi(self): self.buttonBox.rejected.connect(self.cancelPressed) QMetaObject.connectSlotsByName(self) + def requestFinished(self): + """Change the webview HTML content""" + reply = self.sender() + if reply.error() != QNetworkReply.NoError: + html = self.tr('

No help available for this algorithm

{}

'.format(reply.errorString())) + else: + html = unicode(reply.readAll()) + reply.deleteLater() + self.txtHelp.setHtml(html) + def getAvailableDependencies(self): if self._algName is None: dependent = [] diff --git a/python/plugins/processing/preconfigured/DeletePreconfiguredAlgorithmAction.py b/python/plugins/processing/preconfigured/DeletePreconfiguredAlgorithmAction.py index 879a75189459..be1abfcd88ea 100644 --- a/python/plugins/processing/preconfigured/DeletePreconfiguredAlgorithmAction.py +++ b/python/plugins/processing/preconfigured/DeletePreconfiguredAlgorithmAction.py @@ -31,6 +31,7 @@ from processing.preconfigured.PreconfiguredAlgorithm import PreconfiguredAlgorithm from processing.core.alglist import algList + class DeletePreconfiguredAlgorithmAction(ContextAction): def __init__(self): diff --git a/python/plugins/processing/ui/DlgAlgorithmBase.ui b/python/plugins/processing/ui/DlgAlgorithmBase.ui index b171a2f863bf..0e0a9bbc88e6 100644 --- a/python/plugins/processing/ui/DlgAlgorithmBase.ui +++ b/python/plugins/processing/ui/DlgAlgorithmBase.ui @@ -47,9 +47,6 @@ - - QFrame::NoFrame - true @@ -69,13 +66,7 @@ 0 - - - - about:blank - - - + @@ -131,13 +122,6 @@ - - - QgsWebView - QWidget -
qgis.core
-
-
diff --git a/python/plugins/processing/ui/DlgGetScriptsAndModels.ui b/python/plugins/processing/ui/DlgGetScriptsAndModels.ui index 72378dc329bf..4661c901c546 100644 --- a/python/plugins/processing/ui/DlgGetScriptsAndModels.ui +++ b/python/plugins/processing/ui/DlgGetScriptsAndModels.ui @@ -6,32 +6,20 @@ 0 0 - 826 - 520 + 504 + 523 Get scripts and models - - + + Qt::Horizontal - - - 350 - 0 - - - - - 100000 - 100000 - - QAbstractItemView::SingleSelection @@ -59,96 +47,55 @@ - - - QFrame::StyledPanel - - - QFrame::Sunken - - - - 0 - - - 0 - - - - - - 10000 - 10000 - - - - - about:blank - - - - - - + - - - - - - - 0 - 0 - - - - - 0 - 0 - - - - 0 - - - false - - - - - - - - 0 - 0 - - - - - 200 - 16777215 - - - - Qt::Horizontal - - - QDialogButtonBox::Cancel|QDialogButtonBox::Ok - - - - + + + + + 0 + 0 + + + + + 0 + 0 + + + + 0 + + + false + + + + + + + + 0 + 0 + + + + + 200 + 16777215 + + + + Qt::Horizontal + + + QDialogButtonBox::Cancel|QDialogButtonBox::Ok + + - - - QgsWebView - QWidget -
qgis.core
-
-
diff --git a/python/plugins/processing/ui/DlgHelpEdition.ui b/python/plugins/processing/ui/DlgHelpEdition.ui index 739c4986f06c..c00fc13b6c93 100644 --- a/python/plugins/processing/ui/DlgHelpEdition.ui +++ b/python/plugins/processing/ui/DlgHelpEdition.ui @@ -20,18 +20,14 @@ 9 + + + Qt::Vertical - - - - about:blank - - - Qt::Horizontal @@ -110,13 +106,6 @@
- - - QgsWebView - QWidget -
qgis.core
-
-
diff --git a/python/plugins/processing/ui/DlgResults.ui b/python/plugins/processing/ui/DlgResults.ui index eb4656737cb7..b9e6c3917e6e 100644 --- a/python/plugins/processing/ui/DlgResults.ui +++ b/python/plugins/processing/ui/DlgResults.ui @@ -14,24 +14,12 @@ Results - - 6 - - - 9 - Qt::Horizontal - - - 0 - 0 - - false @@ -41,19 +29,7 @@ - - - - 0 - 0 - - - - - about:blank - - - + @@ -68,13 +44,6 @@ - - - QgsWebView - QWidget -
qgis.core
-
-