183 |
183 |
184 self.__page.safeBrowsingAbort.connect(self.safeBrowsingAbort) |
184 self.__page.safeBrowsingAbort.connect(self.safeBrowsingAbort) |
185 self.__page.safeBrowsingBad.connect(self.safeBrowsingBad) |
185 self.__page.safeBrowsingBad.connect(self.safeBrowsingBad) |
186 self.__page.printPageRequested.connect(self.__printPage) |
186 self.__page.printPageRequested.connect(self.__printPage) |
187 self.__page.quotaRequested.connect(self.__quotaRequested) |
187 self.__page.quotaRequested.connect(self.__quotaRequested) |
|
188 with contextlib.suppress(AttributeError): |
|
189 # Qt 6.4+ |
|
190 self.__page.fileSystemAccessRequested.connect( |
|
191 self.__fileSystemAccessRequested |
|
192 ) |
188 # The registerProtocolHandlerRequested signal is handled in |
193 # The registerProtocolHandlerRequested signal is handled in |
189 # WebBrowserPage. |
194 # WebBrowserPage. |
190 self.__page.selectClientCertificate.connect(self.__selectClientCertificate) |
195 self.__page.selectClientCertificate.connect(self.__selectClientCertificate) |
191 self.__page.findTextFinished.connect(self.__findTextFinished) |
196 self.__page.findTextFinished.connect(self.__findTextFinished) |
192 |
197 |
2370 |
2375 |
2371 if certificate is None: |
2376 if certificate is None: |
2372 clientCertificateSelection.selectNone() |
2377 clientCertificateSelection.selectNone() |
2373 else: |
2378 else: |
2374 clientCertificateSelection.select(certificate) |
2379 clientCertificateSelection.select(certificate) |
|
2380 |
|
2381 ########################################################################### |
|
2382 ## Methods below implement slots for Qt 6.4+ |
|
2383 ########################################################################### |
|
2384 |
|
2385 @pyqtSlot("QWebEngineFileSystemAccessRequest") |
|
2386 def __fileSystemAccessRequested(self, accessRequest): |
|
2387 """ |
|
2388 Private slot to handle file system access requests of the web page. |
|
2389 |
|
2390 @param accessRequest reference to the file system access request object |
|
2391 @type QWebEngineFileSystemAccessRequest |
|
2392 """ |
|
2393 from PyQt6.QtWebEngineCore import QWebEngineFileSystemAccessRequest |
|
2394 |
|
2395 acceptRequest = Preferences.getWebBrowser("AcceptFileSystemAccessRequest") |
|
2396 # map yes/no/ask from (0, 1, 2) |
|
2397 if acceptRequest == 0: |
|
2398 # always yes |
|
2399 ok = True |
|
2400 elif acceptRequest == 1: |
|
2401 # always no |
|
2402 ok = False |
|
2403 else: |
|
2404 # ask user |
|
2405 if ( |
|
2406 accessRequest.accessFlags() |
|
2407 == QWebEngineFileSystemAccessRequest.AccessFlag.Read |
|
2408 ): |
|
2409 msgTemplate = self.tr( |
|
2410 "<p>Grant the web site at <b>{0}</b> <b>Read</b> access" |
|
2411 " to '{0}'?</p>" |
|
2412 ) |
|
2413 elif ( |
|
2414 accessRequest.accessFlags() |
|
2415 == QWebEngineFileSystemAccessRequest.AccessFlag.Write |
|
2416 ): |
|
2417 msgTemplate = self.tr( |
|
2418 "<p>Grant the web site at <b>{0}</b> <b>Write</b> access" |
|
2419 " to '{0}'?</p>" |
|
2420 ) |
|
2421 else: |
|
2422 msgTemplate = self.tr( |
|
2423 "<p>Grant the web site at <b>{0}</b> <b>Read and Write</b> access" |
|
2424 " to '{0}'?</p>" |
|
2425 ) |
|
2426 |
|
2427 ok = EricMessageBox.yesNo( |
|
2428 self, |
|
2429 self.tr("File System Access Request"), |
|
2430 msgTemplate.format( |
|
2431 accessRequest.origin().host(), |
|
2432 accessRequest.filePath().toLocalFile(), |
|
2433 ), |
|
2434 ) |
|
2435 |
|
2436 if ok: |
|
2437 accessRequest.accept() |
|
2438 else: |
|
2439 accessRequest.reject() |