208 state = Preferences.getHelp("HelpViewerState") |
208 state = Preferences.getHelp("HelpViewerState") |
209 self.restoreState(state) |
209 self.restoreState(state) |
210 |
210 |
211 self.__initHelpDb() |
211 self.__initHelpDb() |
212 |
212 |
|
213 self.__virusTotal = VirusTotalAPI(self) |
|
214 self.__virusTotal.submitUrlError.connect(self.__virusTotalSubmitUrlError) |
|
215 self.__virusTotal.urlScanReport.connect(self.__virusTotalUrlScanReport) |
|
216 self.__virusTotal.fileScanReport.connect(self.__virusTotalFileScanReport) |
|
217 |
213 QTimer.singleShot(0, self.__lookForNewDocumentation) |
218 QTimer.singleShot(0, self.__lookForNewDocumentation) |
214 if self.__searchWord is not None: |
219 if self.__searchWord is not None: |
215 QTimer.singleShot(0, self.__searchForWord) |
220 QTimer.singleShot(0, self.__searchForWord) |
216 |
221 |
217 def __setIconDatabasePath(self, enable=True): |
222 def __setIconDatabasePath(self, enable=True): |
1933 |
1938 |
1934 self.tabWidget.preferencesChanged() |
1939 self.tabWidget.preferencesChanged() |
1935 |
1940 |
1936 self.searchEdit.preferencesChanged() |
1941 self.searchEdit.preferencesChanged() |
1937 |
1942 |
|
1943 self.__virusTotal.preferencesChanged() |
1938 if not Preferences.getHelp("VirusTotalEnabled") or \ |
1944 if not Preferences.getHelp("VirusTotalEnabled") or \ |
1939 Preferences.getHelp("VirusTotalServiceKey") == "": |
1945 Preferences.getHelp("VirusTotalServiceKey") == "": |
1940 self.virustotalSearchEdit.setEnabled(False) |
1946 self.virustotalSearchEdit.setEnabled(False) |
1941 self.virustotalScanCurrentAct.setEnabled(False) |
1947 self.virustotalScanCurrentAct.setEnabled(False) |
1942 else: |
1948 else: |
2688 self.requestVirusTotalScan(url) |
2694 self.requestVirusTotalScan(url) |
2689 |
2695 |
2690 def requestVirusTotalScan(self, url): |
2696 def requestVirusTotalScan(self, url): |
2691 """ |
2697 """ |
2692 Public method to submit a request to scan an URL by VirusTotal. |
2698 Public method to submit a request to scan an URL by VirusTotal. |
2693 """ |
2699 |
2694 vt = VirusTotalAPI(self) |
2700 @param url URL to be scanned (QUrl) |
2695 ok, res = vt.submitUrl(url) |
2701 """ |
2696 if ok: |
2702 self.__virusTotal.submitUrl(url) |
2697 self.newTab(vt.getUrlScanReportUrl(res)) |
2703 |
2698 fileScanPageUrl = vt.getFileScanReportUrl(res) |
2704 def __virusTotalSubmitUrlError(self, msg): |
2699 if fileScanPageUrl: |
2705 """ |
2700 self.newTab(fileScanPageUrl) |
2706 Private slot to handle an URL scan submission error. |
2701 else: |
2707 |
2702 E5MessageBox.critical(self, |
2708 @param msg error message (str) |
2703 self.trUtf8("VirusTotal Scan"), |
2709 """ |
2704 self.trUtf8("""<p>The VirusTotal scan could not be""" |
2710 E5MessageBox.critical(self, |
2705 """ scheduled.<p>\n<p>Reason: {0}</p>""").format(res)) |
2711 self.trUtf8("VirusTotal Scan"), |
|
2712 self.trUtf8("""<p>The VirusTotal scan could not be""" |
|
2713 """ scheduled.<p>\n<p>Reason: {0}</p>""").format(msg)) |
|
2714 |
|
2715 def __virusTotalUrlScanReport(self, url): |
|
2716 """ |
|
2717 Private slot to initiate the display of the URL scan report page. |
|
2718 |
|
2719 @param url URL of the URL scan report page (string) |
|
2720 """ |
|
2721 self.newTab(url) |
|
2722 |
|
2723 def __virusTotalFileScanReport(self, url): |
|
2724 """ |
|
2725 Private slot to initiate the display of the file scan report page. |
|
2726 |
|
2727 @param url URL of the file scan report page (string) |
|
2728 """ |
|
2729 self.newTab(url) |