Skip to content

Commit fad50ec

Browse files
committedJun 26, 2016
[processing] drop WebView dependency (backported from cc7eb27)
1 parent f93faac commit fad50ec

File tree

9 files changed

+73
-89
lines changed

9 files changed

+73
-89
lines changed
 

‎python/plugins/processing/gui/AlgorithmDialogBase.py

Lines changed: 22 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@
3131
from PyQt4 import uic
3232
from PyQt4.QtCore import QCoreApplication, QSettings, QByteArray, SIGNAL, QUrl
3333
from PyQt4.QtGui import QApplication, QDialogButtonBox, QDesktopWidget
34+
from PyQt4.QtNetwork import QNetworkRequest, QNetworkReply
3435

3536
from qgis.utils import iface
3637
from qgis.core import *
@@ -64,9 +65,9 @@ def __init__(self, alg):
6465

6566
self.setWindowTitle(AlgorithmClassification.getDisplayName(self.alg))
6667

67-
desktop = QDesktopWidget()
68-
if desktop.physicalDpiX() > 96:
69-
self.textHelp.setZoomFactor(desktop.physicalDpiX() / 96)
68+
#~ desktop = QDesktopWidget()
69+
#~ if desktop.physicalDpiX() > 96:
70+
#~ self.textHelp.setZoomFactor(desktop.physicalDpiX() / 96)
7071

7172
algHelp = self.alg.shortHelp()
7273
if algHelp is None:
@@ -84,27 +85,39 @@ def __init__(self, alg):
8485

8586
def linkClicked(url):
8687
webbrowser.open(url.toString())
87-
self.textShortHelp.connect(self.textShortHelp, SIGNAL("anchorClicked(const QUrl&)"), linkClicked)
8888

89-
self.textHelp.page().setNetworkAccessManager(QgsNetworkAccessManager.instance())
89+
self.textShortHelp.anchorClicked.connect(linkClicked)
9090

9191
isText, algHelp = self.alg.help()
9292
if algHelp is not None:
9393
algHelp = algHelp if isText else QUrl(algHelp)
9494
try:
9595
if isText:
96-
self.textHelp.setHtml(algHelp)
96+
self.txtHelp.setHtml(algHelp)
9797
else:
98-
self.textHelp.settings().clearMemoryCaches()
99-
self.textHelp.load(algHelp)
100-
except:
98+
html = self.tr('<p>Downloading algorithm help... Please wait.</p>')
99+
self.txtHelp.setHtml(html)
100+
rq = QNetworkRequest(algHelp)
101+
self.reply = QgsNetworkAccessManager.instance().get(rq)
102+
self.reply.finished.connect(self.requestFinished)
103+
except Exception, e:
101104
self.tabWidget.removeTab(2)
102105
else:
103106
self.tabWidget.removeTab(2)
104107

105108
self.showDebug = ProcessingConfig.getSetting(
106109
ProcessingConfig.SHOW_DEBUG_IN_DIALOG)
107110

111+
def requestFinished(self):
112+
"""Change the webview HTML content"""
113+
reply = self.sender()
114+
if reply.error() != QNetworkReply.NoError:
115+
html = self.tr('<h2>No help available for this algorithm</h2><p>{}</p>'.format(reply.errorString()))
116+
else:
117+
html = unicode(reply.readAll())
118+
reply.deleteLater()
119+
self.txtHelp.setHtml(html)
120+
108121
def closeEvent(self, evt):
109122
self.settings.setValue("/Processing/dialogBase", self.saveGeometry())
110123
super(AlgorithmDialogBase, self).closeEvent(evt)

‎python/plugins/processing/gui/GetScriptsAndModels.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -207,10 +207,10 @@ def treeLoaded(self, reply):
207207
self.tree.addTopLevelItem(self.notinstalledItem)
208208
self.tree.addTopLevelItem(self.uptodateItem)
209209

210-
self.webView.setHtml(self.HELP_TEXT)
210+
self.txtHelp.setHtml(self.HELP_TEXT)
211211

212212
def setHelp(self, reply, item):
213-
"""Change the webview HTML content"""
213+
"""Change the HTML content"""
214214
QApplication.restoreOverrideCursor()
215215
if reply.error() != QNetworkReply.NoError:
216216
html = self.tr('<h2>No detailed description available for this script</h2>')
@@ -222,14 +222,14 @@ def setHelp(self, reply, item):
222222
html += self.tr('<p><b>Created by:</b> %s') % getDescription(ALG_CREATOR, descriptions)
223223
html += self.tr('<p><b>Version:</b> %s') % getDescription(ALG_VERSION, descriptions)
224224
reply.deleteLater()
225-
self.webView.setHtml(html)
225+
self.txtHelp.setHtml(html)
226226

227227
def currentItemChanged(self, item, prev):
228228
if isinstance(item, TreeItem):
229229
url = self.urlBase + item.filename.replace(' ', '%20') + '.help'
230230
self.grabHTTP(url, self.setHelp, item)
231231
else:
232-
self.webView.setHtml(self.HELP_TEXT)
232+
self.txtHelp.setHtml(self.HELP_TEXT)
233233

234234
def getTreeBranchForState(self, filename, version):
235235
if not os.path.exists(os.path.join(self.folder, filename)):

‎python/plugins/processing/gui/HelpEditionDialog.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ def changeItem(self):
138138
self.updateHtmlView()
139139

140140
def updateHtmlView(self):
141-
self.webView.setHtml(self.getHtml())
141+
self.txtPreview.setHtml(self.getHtml())
142142

143143
def getDescription(self, name):
144144
if name in self.descriptions:

‎python/plugins/processing/gui/ResultsDialog.py

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
__revision__ = '$Format:%H$'
2727

2828
import os
29+
import codecs
2930

3031
from PyQt4 import uic
3132
from PyQt4.QtCore import QUrl
@@ -52,7 +53,7 @@ def __init__(self):
5253
self.fillTree()
5354

5455
if self.lastUrl:
55-
self.webView.load(self.lastUrl)
56+
self.txtResults.setHtml(self.loadResults(self.lastUrl))
5657

5758
def fillTree(self):
5859
elements = ProcessingResults.getResults()
@@ -63,13 +64,17 @@ def fillTree(self):
6364
item = TreeResultItem(element)
6465
item.setIcon(0, self.keyIcon)
6566
self.tree.addTopLevelItem(item)
66-
self.lastUrl = QUrl(elements[-1].filename)
67+
self.lastUrl = elements[-1].filename
6768

6869
def changeResult(self):
6970
item = self.tree.currentItem()
7071
if isinstance(item, TreeResultItem):
71-
url = QUrl(item.filename)
72-
self.webView.load(url)
72+
self.txtResults.setHtml(self.loadResults(item.filename))
73+
74+
def loadResults(self, fileName):
75+
with codecs.open(fileName, encoding='utf-8') as f:
76+
content = f.read()
77+
return content
7378

7479

7580
class TreeResultItem(QTreeWidgetItem):

‎python/plugins/processing/modeler/ModelerParametersDialog.py

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@
2727

2828
from PyQt4.QtCore import Qt, QUrl, QMetaObject
2929
from PyQt4.QtGui import QDialog, QDialogButtonBox, QLabel, QLineEdit, QFrame, QPushButton, QSizePolicy, QVBoxLayout, QHBoxLayout, QTabWidget, QWidget, QScrollArea, QComboBox, QTableWidgetItem, QMessageBox
30-
from PyQt4.QtWebKit import QWebView
30+
from PyQt4.QtNetwork import QNetworkRequest, QNetworkReply
31+
32+
from qgis.core import QgsNetworkAccessManager
3133

3234
from processing.modeler.ModelerAlgorithm import ValueFromInput, \
3335
ValueFromOutput, Algorithm, ModelerOutput
@@ -166,27 +168,27 @@ def setupUi(self):
166168
self.scrollArea.setWidget(self.paramPanel)
167169
self.scrollArea.setWidgetResizable(True)
168170
self.tabWidget.addTab(self.scrollArea, self.tr('Parameters'))
169-
self.webView = QWebView()
171+
172+
self.txtHelp = QTextBrowser()
170173

171174
html = None
172175
url = None
173-
isText, help = self._alg.help()
174-
if help is not None:
175-
if isText:
176-
html = help
177-
else:
178-
url = QUrl(help)
179-
else:
180-
html = self.tr('<h2>Sorry, no help is available for this '
181-
'algorithm.</h2>')
182-
try:
183-
if html:
184-
self.webView.setHtml(html)
185-
elif url:
186-
self.webView.load(url)
187-
except:
188-
self.webView.setHtml(self.tr('<h2>Could not open help file :-( </h2>'))
189-
self.tabWidget.addTab(self.webView, 'Help')
176+
isText, algHelp = self._alg.help()
177+
if algHelp is not None:
178+
algHelp = algHelp if isText else QUrl(algHelp)
179+
try:
180+
if isText:
181+
self.txtHelp.setHtml(algHelp)
182+
else:
183+
html = self.tr('<p>Downloading algorithm help... Please wait.</p>')
184+
self.txtHelp.setHtml(html)
185+
self.reply = QgsNetworkAccessManager.instance().get(QNetworkRequest(algHelp))
186+
self.reply.finished.connect(self.requestFinished)
187+
except:
188+
self.txtHelp.setHtml(self.tr('<h2>No help available for this algorithm</h2>'))
189+
190+
self.tabWidget.addTab(self.txtHelp, 'Help')
191+
190192
self.verticalLayout2.addWidget(self.tabWidget)
191193
self.verticalLayout2.addWidget(self.buttonBox)
192194
self.setLayout(self.verticalLayout2)
@@ -205,6 +207,16 @@ def getAvailableDependencies(self):
205207
opts.append(alg)
206208
return opts
207209

210+
def requestFinished(self):
211+
"""Change the webview HTML content"""
212+
reply = self.sender()
213+
if reply.error() != QNetworkReply.NoError:
214+
html = self.tr('<h2>No help available for this algorithm</h2><p>{}</p>'.format(reply.errorString()))
215+
else:
216+
html = unicode(reply.readAll())
217+
reply.deleteLater()
218+
self.txtHelp.setHtml(html)
219+
208220
def getDependenciesPanel(self):
209221
return MultipleInputPanel([alg.algorithm.name for alg in self.getAvailableDependencies()])
210222

‎python/plugins/processing/ui/DlgAlgorithmBase.ui

Lines changed: 1 addition & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,6 @@
4747
</property>
4848
<item>
4949
<widget class="QTextEdit" name="txtLog">
50-
<property name="frameShape">
51-
<enum>QFrame::NoFrame</enum>
52-
</property>
5350
<property name="readOnly">
5451
<bool>true</bool>
5552
</property>
@@ -69,13 +66,7 @@
6966
<number>0</number>
7067
</property>
7168
<item>
72-
<widget class="QWebView" name="textHelp">
73-
<property name="url">
74-
<url>
75-
<string>about:blank</string>
76-
</url>
77-
</property>
78-
</widget>
69+
<widget class="QTextBrowser" name="txtHelp"/>
7970
</item>
8071
</layout>
8172
</widget>
@@ -131,13 +122,6 @@
131122
</item>
132123
</layout>
133124
</widget>
134-
<customwidgets>
135-
<customwidget>
136-
<class>QWebView</class>
137-
<extends>QWidget</extends>
138-
<header>QtWebKit/QWebView</header>
139-
</customwidget>
140-
</customwidgets>
141125
<resources/>
142126
<connections>
143127
<connection>

‎python/plugins/processing/ui/DlgGetScriptsAndModels.ui

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@
7474
<number>0</number>
7575
</property>
7676
<item>
77-
<widget class="QWebView" name="webView">
77+
<widget class="QTextEdit" name="txtHelp">
7878
<property name="maximumSize">
7979
<size>
8080
<width>10000</width>

‎python/plugins/processing/ui/DlgHelpEdition.ui

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,18 +20,14 @@
2020
<property name="margin">
2121
<number>9</number>
2222
</property>
23+
<item>
24+
<widget class="QTextEdit" name="txtPreview"/>
25+
</item>
2326
<item>
2427
<widget class="QSplitter" name="splitter_2">
2528
<property name="orientation">
2629
<enum>Qt::Vertical</enum>
2730
</property>
28-
<widget class="QWebView" name="webView">
29-
<property name="url">
30-
<url>
31-
<string>about:blank</string>
32-
</url>
33-
</property>
34-
</widget>
3531
<widget class="QSplitter" name="splitter">
3632
<property name="orientation">
3733
<enum>Qt::Horizontal</enum>
@@ -110,13 +106,6 @@
110106
</item>
111107
</layout>
112108
</widget>
113-
<customwidgets>
114-
<customwidget>
115-
<class>QWebView</class>
116-
<extends>QWidget</extends>
117-
<header>QtWebKit/QWebView</header>
118-
</customwidget>
119-
</customwidgets>
120109
<resources/>
121110
<connections>
122111
<connection>

‎python/plugins/processing/ui/DlgResults.ui

Lines changed: 1 addition & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -41,19 +41,7 @@
4141
</property>
4242
</column>
4343
</widget>
44-
<widget class="QWebView" name="webView">
45-
<property name="minimumSize">
46-
<size>
47-
<width>0</width>
48-
<height>0</height>
49-
</size>
50-
</property>
51-
<property name="url">
52-
<url>
53-
<string>about:blank</string>
54-
</url>
55-
</property>
56-
</widget>
44+
<widget class="QTextEdit" name="txtResults"/>
5745
</widget>
5846
</item>
5947
<item>
@@ -68,13 +56,6 @@
6856
</item>
6957
</layout>
7058
</widget>
71-
<customwidgets>
72-
<customwidget>
73-
<class>QWebView</class>
74-
<extends>QWidget</extends>
75-
<header>QtWebKit/QWebView</header>
76-
</customwidget>
77-
</customwidgets>
7859
<resources/>
7960
<connections>
8061
<connection>

0 commit comments

Comments
 (0)