21 |
21 |
22 from E5Gui import E5MessageBox |
22 from E5Gui import E5MessageBox |
23 |
23 |
24 import Preferences |
24 import Preferences |
25 |
25 |
26 from .DownloadDialog import DownloadDialog |
|
27 from .Bookmarks.AddBookmarkDialog import AddBookmarkDialog |
26 from .Bookmarks.AddBookmarkDialog import AddBookmarkDialog |
28 from .JavaScriptResources import fetchLinks_js |
27 from .JavaScriptResources import fetchLinks_js |
29 from .HTMLResources import notFoundPage_html |
28 from .HTMLResources import notFoundPage_html |
30 from .SslInfoDialog import SslInfoDialog |
29 from .SslInfoDialog import SslInfoDialog |
31 import Helpviewer.HelpWindow |
30 import Helpviewer.HelpWindow |
171 @param frame reference to the frame sending the request (QWebFrame) |
170 @param frame reference to the frame sending the request (QWebFrame) |
172 @param request reference to the request object (QNetworkRequest) |
171 @param request reference to the request object (QNetworkRequest) |
173 @param type_ type of the navigation request (QWebPage.NavigationType) |
172 @param type_ type of the navigation request (QWebPage.NavigationType) |
174 @return flag indicating acceptance (boolean) |
173 @return flag indicating acceptance (boolean) |
175 """ |
174 """ |
|
175 # TODO: extend with more functionality |
176 self.__lastRequest = request |
176 self.__lastRequest = request |
177 self.__lastRequestType = type_ |
177 self.__lastRequestType = type_ |
178 |
178 |
179 return QWebPage.acceptNavigationRequest(self, frame, request, type_) |
179 return QWebPage.acceptNavigationRequest(self, frame, request, type_) |
180 |
180 |
379 self.__page = HelpWebPage(self) |
379 self.__page = HelpWebPage(self) |
380 self.setPage(self.__page) |
380 self.setPage(self.__page) |
381 |
381 |
382 self.mw = mainWindow |
382 self.mw = mainWindow |
383 self.ctrlPressed = False |
383 self.ctrlPressed = False |
384 self.__downloadWindows = [] |
|
385 self.__isLoading = False |
384 self.__isLoading = False |
386 self.__progress = 0 |
385 self.__progress = 0 |
387 |
386 |
388 self.__currentZoom = 100 |
387 self.__currentZoom = 100 |
389 self.__zoomLevels = [ |
388 self.__zoomLevels = [ |
1143 """ |
1142 """ |
1144 url = self.url() |
1143 url = self.url() |
1145 if url.isEmpty(): |
1144 if url.isEmpty(): |
1146 return |
1145 return |
1147 |
1146 |
1148 req = QNetworkRequest(url) |
1147 self.mw.downloadManager().download(url, True) |
1149 reply = self.mw.networkAccessManager().get(req) |
|
1150 self.__unsupportedContent(reply, True, True) |
|
1151 |
1148 |
1152 def __unsupportedContent(self, reply, requestFilename = None, download = False): |
1149 def __unsupportedContent(self, reply, requestFilename = None, download = False): |
1153 """ |
1150 """ |
1154 Private slot to handle the unsupportedContent signal. |
1151 Private slot to handle the unsupportedContent signal. |
1155 |
1152 |
1166 |
1163 |
1167 if replyUrl.scheme() == "abp": |
1164 if replyUrl.scheme() == "abp": |
1168 return |
1165 return |
1169 |
1166 |
1170 if reply.error() == QNetworkReply.NoError: |
1167 if reply.error() == QNetworkReply.NoError: |
1171 if reply.url().isEmpty(): |
1168 if reply.header(QNetworkRequest.ContentTypeHeader): |
|
1169 self.mw.downloadManager().handleUnsupportedContent( |
|
1170 reply, webPage = self.page()) |
1172 return |
1171 return |
1173 size = reply.header(QNetworkRequest.ContentLengthHeader) |
|
1174 if size == 0: |
|
1175 return |
|
1176 |
|
1177 if requestFilename is None: |
|
1178 requestFilename = Preferences.getUI("RequestDownloadFilename") |
|
1179 dlg = DownloadDialog(reply, requestFilename, self.page(), download) |
|
1180 if dlg.initialize(): |
|
1181 dlg.done[()].connect(self.__downloadDone) |
|
1182 self.__downloadWindows.append(dlg) |
|
1183 dlg.show() |
|
1184 ## self.setUrl(self.url()) |
|
1185 else: |
1172 else: |
1186 replyUrl = reply.url() |
1173 replyUrl = reply.url() |
1187 if replyUrl.isEmpty(): |
1174 if replyUrl.isEmpty(): |
1188 return |
1175 return |
1189 |
1176 |
1214 ) |
1201 ) |
1215 self.setHtml(html, replyUrl) |
1202 self.setHtml(html, replyUrl) |
1216 self.mw.historyManager().removeHistoryEntry(replyUrl, self.title()) |
1203 self.mw.historyManager().removeHistoryEntry(replyUrl, self.title()) |
1217 self.loadFinished.emit(False) |
1204 self.loadFinished.emit(False) |
1218 |
1205 |
1219 def __downloadDone(self): |
|
1220 """ |
|
1221 Private slot to handle the done signal of the download dialogs. |
|
1222 """ |
|
1223 dlg = self.sender() |
|
1224 if dlg in self.__downloadWindows: |
|
1225 dlg.done[()].disconnect(self.__downloadDone) |
|
1226 |
|
1227 def __downloadRequested(self, request): |
1206 def __downloadRequested(self, request): |
1228 """ |
1207 """ |
1229 Private slot to handle a download request. |
1208 Private slot to handle a download request. |
1230 |
1209 |
1231 @param request reference to the request object (QNetworkRequest) |
1210 @param request reference to the request object (QNetworkRequest) |
1232 """ |
1211 """ |
1233 if request.url().isEmpty(): |
1212 self.mw.downloadManager().download(request) |
1234 return |
|
1235 mgr = self.page().networkAccessManager() |
|
1236 self.__unsupportedContent(mgr.get(request), download = True) |
|
1237 |
1213 |
1238 def __databaseQuotaExceeded(self, frame, databaseName): |
1214 def __databaseQuotaExceeded(self, frame, databaseName): |
1239 """ |
1215 """ |
1240 Private slot to handle the case, where the database quota is exceeded. |
1216 Private slot to handle the case, where the database quota is exceeded. |
1241 |
1217 |