31
31
from qgis .PyQt import uic
32
32
from qgis .PyQt .QtCore import QCoreApplication , QSettings , QByteArray , QUrl
33
33
from qgis .PyQt .QtWidgets import QApplication , QDialogButtonBox , QDesktopWidget
34
+ from qgis .PyQt .QtNetwork import QNetworkRequest , QNetworkReply
34
35
35
36
from qgis .utils import iface
36
37
from qgis .core import QgsNetworkAccessManager
@@ -63,9 +64,9 @@ def __init__(self, alg):
63
64
64
65
self .setWindowTitle (self .alg .displayName ())
65
66
66
- desktop = QDesktopWidget ()
67
- if desktop .physicalDpiX () > 96 :
68
- self .textHelp .setZoomFactor (desktop .physicalDpiX () / 96 )
67
+ #~ desktop = QDesktopWidget()
68
+ #~ if desktop.physicalDpiX() > 96:
69
+ #~ self.txtHelp .setZoomFactor(desktop.physicalDpiX() / 96)
69
70
70
71
algHelp = self .alg .shortHelp ()
71
72
if algHelp is None :
@@ -83,27 +84,39 @@ def __init__(self, alg):
83
84
84
85
def linkClicked (url ):
85
86
webbrowser .open (url .toString ())
86
- self .textShortHelp .anchorClicked .connect (linkClicked )
87
87
88
- self .textHelp . page (). setNetworkAccessManager ( QgsNetworkAccessManager . instance () )
88
+ self .textShortHelp . anchorClicked . connect ( linkClicked )
89
89
90
90
isText , algHelp = self .alg .help ()
91
91
if algHelp is not None :
92
92
algHelp = algHelp if isText else QUrl (algHelp )
93
93
try :
94
94
if isText :
95
- self .textHelp .setHtml (algHelp )
95
+ self .txtHelp .setHtml (algHelp )
96
96
else :
97
- self .textHelp .settings ().clearMemoryCaches ()
98
- self .textHelp .load (algHelp )
99
- except :
97
+ html = self .tr ('<p>Downloading algorithm help... Please wait.</p>' )
98
+ self .txtHelp .setHtml (html )
99
+ rq = QNetworkRequest (algHelp )
100
+ self .reply = QgsNetworkAccessManager .instance ().get (rq )
101
+ self .reply .finished .connect (self .requestFinished )
102
+ except Exception , e :
100
103
self .tabWidget .removeTab (2 )
101
104
else :
102
105
self .tabWidget .removeTab (2 )
103
106
104
107
self .showDebug = ProcessingConfig .getSetting (
105
108
ProcessingConfig .SHOW_DEBUG_IN_DIALOG )
106
109
110
+ def requestFinished (self ):
111
+ """Change the webview HTML content"""
112
+ reply = self .sender ()
113
+ if reply .error () != QNetworkReply .NoError :
114
+ html = self .tr ('<h2>No help available for this algorithm</h2><p>{}</p>' .format (reply .errorString ()))
115
+ else :
116
+ html = unicode (reply .readAll ())
117
+ reply .deleteLater ()
118
+ self .txtHelp .setHtml (html )
119
+
107
120
def closeEvent (self , evt ):
108
121
self .settings .setValue ("/Processing/dialogBase" , self .saveGeometry ())
109
122
super (AlgorithmDialogBase , self ).closeEvent (evt )
0 commit comments