3232from qgis .PyQt import uic
3333from qgis .PyQt .QtCore import QCoreApplication , QByteArray , QUrl
3434from qgis .PyQt .QtWidgets import QApplication , QDialogButtonBox
35- from qgis .PyQt .QtNetwork import QNetworkRequest , QNetworkReply
3635
3736from qgis .utils import iface
38- from qgis .core import (QgsNetworkAccessManager ,
39- QgsProject ,
37+ from qgis .core import (QgsProject ,
4038 QgsProcessingFeedback ,
4139 QgsSettings )
4240
@@ -103,6 +101,7 @@ def __init__(self, alg):
103101 self .buttonCancel .setEnabled (False )
104102
105103 self .btnClose = self .buttonBox .button (QDialogButtonBox .Close )
104+ self .buttonBox .helpRequested .connect (self .openHelp )
106105
107106 # don't collapse parameters panel
108107 self .splitter .setCollapsible (0 , False )
@@ -128,23 +127,6 @@ def linkClicked(url):
128127
129128 self .textShortHelp .anchorClicked .connect (linkClicked )
130129
131- if self .alg .helpString () is not None :
132- try :
133- self .txtHelp .setHtml (self .alg .helpString ())
134- except Exception :
135- self .tabWidget .removeTab (2 )
136- elif self .alg .helpUrl () is not None :
137- try :
138- html = self .tr ('<p>Downloading algorithm help... Please wait.</p>' )
139- self .txtHelp .setHtml (html )
140- rq = QNetworkRequest (QUrl (self .alg .helpUrl ()))
141- self .reply = QgsNetworkAccessManager .instance ().get (rq )
142- self .reply .finished .connect (self .requestFinished )
143- except Exception :
144- self .tabWidget .removeTab (2 )
145- else :
146- self .tabWidget .removeTab (2 )
147-
148130 self .showDebug = ProcessingConfig .getSetting (
149131 ProcessingConfig .SHOW_DEBUG_IN_DIALOG )
150132
@@ -154,16 +136,6 @@ def formatHelp(self, alg):
154136 return None
155137 return "<h2>%s</h2>%s" % (alg .displayName (), "" .join (["<p>%s</p>" % s for s in text .split ("\n " )]))
156138
157- def requestFinished (self ):
158- """Change the webview HTML content"""
159- reply = self .sender ()
160- if reply .error () != QNetworkReply .NoError :
161- html = self .tr ('<h2>No help available for this algorithm</h2><p>{}</p>' .format (reply .errorString ()))
162- else :
163- html = str (reply .readAll ())
164- reply .deleteLater ()
165- self .txtHelp .setHtml (html )
166-
167139 def closeEvent (self , event ):
168140 self ._saveGeometry ()
169141 super (AlgorithmDialogBase , self ).closeEvent (event )
@@ -237,6 +209,11 @@ def reject(self):
237209 def finish (self , context ):
238210 pass
239211
212+ def openHelp (self ):
213+ algHelp = self .alg .helpUrl ()
214+ if algHelp is not None :
215+ webbrowser .open (algHelp )
216+
240217 def _saveGeometry (self ):
241218 self .settings .setValue ("/Processing/dialogBaseSplitter" , self .splitter .saveState ())
242219 self .settings .setValue ("/Processing/dialogBase" , self .saveGeometry ())
0 commit comments