Sun, 26 Jul 2015 11:12:08 +0200
Finished implementing the VirusTotal APIv2 interface.
--- a/APIs/Python3/eric6.api Sat Jul 25 20:00:25 2015 +0200 +++ b/APIs/Python3/eric6.api Sun Jul 26 11:12:08 2015 +0200 @@ -3332,31 +3332,33 @@ eric6.Helpviewer.UserAgent.UserAgentWriter.UserAgentWriter.write?4(fileNameOrDevice, agents) eric6.Helpviewer.UserAgent.UserAgentWriter.UserAgentWriter?1() eric6.Helpviewer.UserAgent.UserAgentsDialog.UserAgentsDialog?1(parent=None) -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.GetDomainReportPattern?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.GetFileReportPattern?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.GetIpAddressReportPattern?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.GetUrlReportPattern?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.ScanUrlPattern?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.ServiceCode_InvalidKey?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.ServiceCode_InvalidPrivilege?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.ServiceCode_RateLimitExceeded?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.ServiceResult_ItemNotPresent?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.ServiceResult_ItemPresent?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.ServiceResult_ItemQueued?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.TestServiceKeyScanID?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.checkServiceKeyFinished?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.checkServiceKeyValidity?4(key, protocol="") -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.close?4() -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.fileScanReport?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.getDomainReport?4(domain) -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.getIpAddressReport?4(ipAddress) -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.preferencesChanged?4() -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.submitUrl?4(url) -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.submitUrlError?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI.urlScanReport?7 -eric6.Helpviewer.VirusTotalApi.VirusTotalAPI?1(parent=None) -eric6.Helpviewer.VirusTotalDomainReportDialog.VirusTotalDomainReportDialog?1(domain, resolutions, urls, subdomains, bdCategory, tmCategory, wtsCategory, categories, parent=None) -eric6.Helpviewer.VirusTotalIpReportDialog.VirusTotalIpReportDialog?1(ip, owner, resolutions, urls, parent=None) +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.GetDomainReportPattern?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.GetFileReportPattern?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.GetIpAddressReportPattern?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.GetUrlReportPattern?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.ScanUrlPattern?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.ServiceCode_InvalidKey?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.ServiceCode_InvalidPrivilege?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.ServiceCode_RateLimitExceeded?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.ServiceResult_ItemNotPresent?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.ServiceResult_ItemPresent?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.ServiceResult_ItemQueued?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.TestServiceKeyScanID?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.checkServiceKeyFinished?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.checkServiceKeyValidity?4(key, protocol="") +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.close?4() +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.fileScanReport?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.getDomainReport?4(domain) +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.getIpAddressReport?4(ipAddress) +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.preferencesChanged?4() +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.submitUrl?4(url) +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.submitUrlError?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI.urlScanReport?7 +eric6.Helpviewer.VirusTotal.VirusTotalApi.VirusTotalAPI?1(parent=None) +eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.VirusTotalDomainReportDialog.on_whoisButton_clicked?4() +eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.VirusTotalDomainReportDialog?1(domain, resolutions, urls, subdomains, bdCategory, tmCategory, wtsCategory, whois, parent=None) +eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog.VirusTotalIpReportDialog?1(ip, owner, resolutions, urls, parent=None) +eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog.VirusTotalWhoisDialog?1(domain, whois, parent=None) eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlash.ClickToFlash._acceptedArgNames?8 eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlash.ClickToFlash._acceptedArgValues?8 eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlash.ClickToFlash._acceptedUrl?8
--- a/APIs/Python3/eric6.bas Sat Jul 25 20:00:25 2015 +0200 +++ b/APIs/Python3/eric6.bas Sun Jul 26 11:12:08 2015 +0200 @@ -781,6 +781,7 @@ VirusTotalAPI QObject VirusTotalDomainReportDialog QDialog Ui_VirusTotalDomainReportDialog VirusTotalIpReportDialog QDialog Ui_VirusTotalIpReportDialog +VirusTotalWhoisDialog QDialog Ui_VirusTotalWhoisDialog VisibilityMixin ClbrBaseClasses.ClbrVisibilityMixinBase VmListspacePlugin QObject VmTabviewPlugin QObject
--- a/Documentation/Help/source.qhp Sat Jul 25 20:00:25 2015 +0200 +++ b/Documentation/Help/source.qhp Sun Jul 26 11:12:08 2015 +0200 @@ -384,6 +384,12 @@ <section title="eric6.Helpviewer.UserAgent.UserAgentWriter" ref="eric6.Helpviewer.UserAgent.UserAgentWriter.html" /> <section title="eric6.Helpviewer.UserAgent.UserAgentsDialog" ref="eric6.Helpviewer.UserAgent.UserAgentsDialog.html" /> </section> + <section title="eric6.Helpviewer.VirusTotal" ref="index-eric6.Helpviewer.VirusTotal.html"> + <section title="eric6.Helpviewer.VirusTotal.VirusTotalApi" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html" /> + <section title="eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog" ref="eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.html" /> + <section title="eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog" ref="eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog.html" /> + <section title="eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog" ref="eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog.html" /> + </section> <section title="eric6.Helpviewer.WebPlugins" ref="index-eric6.Helpviewer.WebPlugins.html"> <section title="eric6.Helpviewer.WebPlugins.ClickToFlash" ref="index-eric6.Helpviewer.WebPlugins.ClickToFlash.html"> <section title="eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlash" ref="eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlash.html" /> @@ -416,9 +422,6 @@ <section title="eric6.Helpviewer.QtHelpDocumentationDialog" ref="eric6.Helpviewer.QtHelpDocumentationDialog.html" /> <section title="eric6.Helpviewer.QtHelpFiltersDialog" ref="eric6.Helpviewer.QtHelpFiltersDialog.html" /> <section title="eric6.Helpviewer.SearchWidget" ref="eric6.Helpviewer.SearchWidget.html" /> - <section title="eric6.Helpviewer.VirusTotalApi" ref="eric6.Helpviewer.VirusTotalApi.html" /> - <section title="eric6.Helpviewer.VirusTotalDomainReportDialog" ref="eric6.Helpviewer.VirusTotalDomainReportDialog.html" /> - <section title="eric6.Helpviewer.VirusTotalIpReportDialog" ref="eric6.Helpviewer.VirusTotalIpReportDialog.html" /> </section> <section title="eric6.IconEditor" ref="index-eric6.IconEditor.html"> <section title="eric6.IconEditor.cursors" ref="index-eric6.IconEditor.cursors.html"> @@ -12900,30 +12903,35 @@ <keyword name="ViewmanagerPage (Module)" id="ViewmanagerPage (Module)" ref="eric6.Preferences.ConfigurationPages.ViewmanagerPage.html" /> <keyword name="ViewmanagerPage.on_windowComboBox_activated" id="ViewmanagerPage.on_windowComboBox_activated" ref="eric6.Preferences.ConfigurationPages.ViewmanagerPage.html#ViewmanagerPage.on_windowComboBox_activated" /> <keyword name="ViewmanagerPage.save" id="ViewmanagerPage.save" ref="eric6.Preferences.ConfigurationPages.ViewmanagerPage.html#ViewmanagerPage.save" /> - <keyword name="VirusTotalAPI" id="VirusTotalAPI" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI" /> - <keyword name="VirusTotalAPI (Constructor)" id="VirusTotalAPI (Constructor)" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__init__" /> - <keyword name="VirusTotalAPI.__checkServiceKeyValidityFinished" id="VirusTotalAPI.__checkServiceKeyValidityFinished" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__checkServiceKeyValidityFinished" /> - <keyword name="VirusTotalAPI.__getDomainReportFinished" id="VirusTotalAPI.__getDomainReportFinished" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__getDomainReportFinished" /> - <keyword name="VirusTotalAPI.__getFileScanReportUrl" id="VirusTotalAPI.__getFileScanReportUrl" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__getFileScanReportUrl" /> - <keyword name="VirusTotalAPI.__getFileScanReportUrlFinished" id="VirusTotalAPI.__getFileScanReportUrlFinished" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__getFileScanReportUrlFinished" /> - <keyword name="VirusTotalAPI.__getIpAddressReportFinished" id="VirusTotalAPI.__getIpAddressReportFinished" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__getIpAddressReportFinished" /> - <keyword name="VirusTotalAPI.__getUrlScanReportUrl" id="VirusTotalAPI.__getUrlScanReportUrl" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__getUrlScanReportUrl" /> - <keyword name="VirusTotalAPI.__getUrlScanReportUrlFinished" id="VirusTotalAPI.__getUrlScanReportUrlFinished" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__getUrlScanReportUrlFinished" /> - <keyword name="VirusTotalAPI.__loadSettings" id="VirusTotalAPI.__loadSettings" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__loadSettings" /> - <keyword name="VirusTotalAPI.__submitUrlFinished" id="VirusTotalAPI.__submitUrlFinished" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.__submitUrlFinished" /> - <keyword name="VirusTotalAPI.checkServiceKeyValidity" id="VirusTotalAPI.checkServiceKeyValidity" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.checkServiceKeyValidity" /> - <keyword name="VirusTotalAPI.close" id="VirusTotalAPI.close" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.close" /> - <keyword name="VirusTotalAPI.getDomainReport" id="VirusTotalAPI.getDomainReport" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.getDomainReport" /> - <keyword name="VirusTotalAPI.getIpAddressReport" id="VirusTotalAPI.getIpAddressReport" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.getIpAddressReport" /> - <keyword name="VirusTotalAPI.preferencesChanged" id="VirusTotalAPI.preferencesChanged" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.preferencesChanged" /> - <keyword name="VirusTotalAPI.submitUrl" id="VirusTotalAPI.submitUrl" ref="eric6.Helpviewer.VirusTotalApi.html#VirusTotalAPI.submitUrl" /> - <keyword name="VirusTotalApi (Module)" id="VirusTotalApi (Module)" ref="eric6.Helpviewer.VirusTotalApi.html" /> - <keyword name="VirusTotalDomainReportDialog" id="VirusTotalDomainReportDialog" ref="eric6.Helpviewer.VirusTotalDomainReportDialog.html#VirusTotalDomainReportDialog" /> - <keyword name="VirusTotalDomainReportDialog (Constructor)" id="VirusTotalDomainReportDialog (Constructor)" ref="eric6.Helpviewer.VirusTotalDomainReportDialog.html#VirusTotalDomainReportDialog.__init__" /> - <keyword name="VirusTotalDomainReportDialog (Module)" id="VirusTotalDomainReportDialog (Module)" ref="eric6.Helpviewer.VirusTotalDomainReportDialog.html" /> - <keyword name="VirusTotalIpReportDialog" id="VirusTotalIpReportDialog" ref="eric6.Helpviewer.VirusTotalIpReportDialog.html#VirusTotalIpReportDialog" /> - <keyword name="VirusTotalIpReportDialog (Constructor)" id="VirusTotalIpReportDialog (Constructor)" ref="eric6.Helpviewer.VirusTotalIpReportDialog.html#VirusTotalIpReportDialog.__init__" /> - <keyword name="VirusTotalIpReportDialog (Module)" id="VirusTotalIpReportDialog (Module)" ref="eric6.Helpviewer.VirusTotalIpReportDialog.html" /> + <keyword name="VirusTotal (Package)" id="VirusTotal (Package)" ref="index-eric6.Helpviewer.VirusTotal.html" /> + <keyword name="VirusTotalAPI" id="VirusTotalAPI" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI" /> + <keyword name="VirusTotalAPI (Constructor)" id="VirusTotalAPI (Constructor)" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__init__" /> + <keyword name="VirusTotalAPI.__checkServiceKeyValidityFinished" id="VirusTotalAPI.__checkServiceKeyValidityFinished" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__checkServiceKeyValidityFinished" /> + <keyword name="VirusTotalAPI.__getDomainReportFinished" id="VirusTotalAPI.__getDomainReportFinished" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__getDomainReportFinished" /> + <keyword name="VirusTotalAPI.__getFileScanReportUrl" id="VirusTotalAPI.__getFileScanReportUrl" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__getFileScanReportUrl" /> + <keyword name="VirusTotalAPI.__getFileScanReportUrlFinished" id="VirusTotalAPI.__getFileScanReportUrlFinished" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__getFileScanReportUrlFinished" /> + <keyword name="VirusTotalAPI.__getIpAddressReportFinished" id="VirusTotalAPI.__getIpAddressReportFinished" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__getIpAddressReportFinished" /> + <keyword name="VirusTotalAPI.__getUrlScanReportUrl" id="VirusTotalAPI.__getUrlScanReportUrl" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__getUrlScanReportUrl" /> + <keyword name="VirusTotalAPI.__getUrlScanReportUrlFinished" id="VirusTotalAPI.__getUrlScanReportUrlFinished" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__getUrlScanReportUrlFinished" /> + <keyword name="VirusTotalAPI.__loadSettings" id="VirusTotalAPI.__loadSettings" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__loadSettings" /> + <keyword name="VirusTotalAPI.__submitUrlFinished" id="VirusTotalAPI.__submitUrlFinished" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.__submitUrlFinished" /> + <keyword name="VirusTotalAPI.checkServiceKeyValidity" id="VirusTotalAPI.checkServiceKeyValidity" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.checkServiceKeyValidity" /> + <keyword name="VirusTotalAPI.close" id="VirusTotalAPI.close" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.close" /> + <keyword name="VirusTotalAPI.getDomainReport" id="VirusTotalAPI.getDomainReport" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.getDomainReport" /> + <keyword name="VirusTotalAPI.getIpAddressReport" id="VirusTotalAPI.getIpAddressReport" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.getIpAddressReport" /> + <keyword name="VirusTotalAPI.preferencesChanged" id="VirusTotalAPI.preferencesChanged" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.preferencesChanged" /> + <keyword name="VirusTotalAPI.submitUrl" id="VirusTotalAPI.submitUrl" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html#VirusTotalAPI.submitUrl" /> + <keyword name="VirusTotalApi (Module)" id="VirusTotalApi (Module)" ref="eric6.Helpviewer.VirusTotal.VirusTotalApi.html" /> + <keyword name="VirusTotalDomainReportDialog" id="VirusTotalDomainReportDialog" ref="eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.html#VirusTotalDomainReportDialog" /> + <keyword name="VirusTotalDomainReportDialog (Constructor)" id="VirusTotalDomainReportDialog (Constructor)" ref="eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.html#VirusTotalDomainReportDialog.__init__" /> + <keyword name="VirusTotalDomainReportDialog (Module)" id="VirusTotalDomainReportDialog (Module)" ref="eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.html" /> + <keyword name="VirusTotalDomainReportDialog.on_whoisButton_clicked" id="VirusTotalDomainReportDialog.on_whoisButton_clicked" ref="eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.html#VirusTotalDomainReportDialog.on_whoisButton_clicked" /> + <keyword name="VirusTotalIpReportDialog" id="VirusTotalIpReportDialog" ref="eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog.html#VirusTotalIpReportDialog" /> + <keyword name="VirusTotalIpReportDialog (Constructor)" id="VirusTotalIpReportDialog (Constructor)" ref="eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog.html#VirusTotalIpReportDialog.__init__" /> + <keyword name="VirusTotalIpReportDialog (Module)" id="VirusTotalIpReportDialog (Module)" ref="eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog.html" /> + <keyword name="VirusTotalWhoisDialog" id="VirusTotalWhoisDialog" ref="eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog.html#VirusTotalWhoisDialog" /> + <keyword name="VirusTotalWhoisDialog (Constructor)" id="VirusTotalWhoisDialog (Constructor)" ref="eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog.html#VirusTotalWhoisDialog.__init__" /> + <keyword name="VirusTotalWhoisDialog (Module)" id="VirusTotalWhoisDialog (Module)" ref="eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog.html" /> <keyword name="VisibilityBase" id="VisibilityBase" ref="eric6.Utilities.ModuleParser.html#VisibilityBase" /> <keyword name="VisibilityBase.isPrivate" id="VisibilityBase.isPrivate" ref="eric6.Utilities.ModuleParser.html#VisibilityBase.isPrivate" /> <keyword name="VisibilityBase.isProtected" id="VisibilityBase.isProtected" ref="eric6.Utilities.ModuleParser.html#VisibilityBase.isProtected" /> @@ -14162,9 +14170,10 @@ <file>eric6.Helpviewer.UserAgent.UserAgentReader.html</file> <file>eric6.Helpviewer.UserAgent.UserAgentWriter.html</file> <file>eric6.Helpviewer.UserAgent.UserAgentsDialog.html</file> - <file>eric6.Helpviewer.VirusTotalApi.html</file> - <file>eric6.Helpviewer.VirusTotalDomainReportDialog.html</file> - <file>eric6.Helpviewer.VirusTotalIpReportDialog.html</file> + <file>eric6.Helpviewer.VirusTotal.VirusTotalApi.html</file> + <file>eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.html</file> + <file>eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog.html</file> + <file>eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog.html</file> <file>eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlash.html</file> <file>eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlashPlugin.html</file> <file>eric6.Helpviewer.WebPlugins.ClickToFlash.ClickToFlashWhitelistDialog.html</file> @@ -14715,6 +14724,7 @@ <file>index-eric6.Helpviewer.Sync.html</file> <file>index-eric6.Helpviewer.UrlBar.html</file> <file>index-eric6.Helpviewer.UserAgent.html</file> + <file>index-eric6.Helpviewer.VirusTotal.html</file> <file>index-eric6.Helpviewer.WebPlugins.ClickToFlash.html</file> <file>index-eric6.Helpviewer.WebPlugins.html</file> <file>index-eric6.Helpviewer.data.html</file>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Helpviewer.VirusTotal.VirusTotalApi.html Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,257 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Helpviewer.VirusTotal.VirusTotalApi</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Helpviewer.VirusTotal.VirusTotalApi</h1> +<p> +Module implementing the <a href="http://www.virustotal.com">VirusTotal</a> +API class. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#VirusTotalAPI">VirusTotalAPI</a></td> +<td>Class implementing the <a href="http://www.virustotal.com">VirusTotal</a> API.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="VirusTotalAPI" ID="VirusTotalAPI"></a> +<h2>VirusTotalAPI</h2> +<p> + Class implementing the <a href="http://www.virustotal.com">VirusTotal</a> + API. +</p><h3>Signals</h3> +<dl> +<dt>checkServiceKeyFinished(bool, str)</dt> +<dd> +emitted after the service key + check has been performed. It gives a flag indicating validity + (boolean) and an error message in case of a network error (string). +</dd><dt>fileScanReport(str)</dt> +<dd> +emitted with the URL of the file scan report + page +</dd><dt>submitUrlError(str)</dt> +<dd> +emitted with the error string, if the URL scan + submission returned an error. +</dd><dt>urlScanReport(str)</dt> +<dd> +emitted with the URL of the URL scan report page +</dd> +</dl> +<h3>Derived from</h3> +QObject +<h3>Class Attributes</h3> +<table> +<tr><td>GetDomainReportPattern</td></tr><tr><td>GetFileReportPattern</td></tr><tr><td>GetIpAddressReportPattern</td></tr><tr><td>GetUrlReportPattern</td></tr><tr><td>ScanUrlPattern</td></tr><tr><td>ServiceCode_InvalidKey</td></tr><tr><td>ServiceCode_InvalidPrivilege</td></tr><tr><td>ServiceCode_RateLimitExceeded</td></tr><tr><td>ServiceResult_ItemNotPresent</td></tr><tr><td>ServiceResult_ItemPresent</td></tr><tr><td>ServiceResult_ItemQueued</td></tr><tr><td>TestServiceKeyScanID</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#VirusTotalAPI.__init__">VirusTotalAPI</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__checkServiceKeyValidityFinished">__checkServiceKeyValidityFinished</a></td> +<td>Private slot to determine the result of the service key validity check.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__getDomainReportFinished">__getDomainReportFinished</a></td> +<td>Private slot to process the IP address report data.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__getFileScanReportUrl">__getFileScanReportUrl</a></td> +<td>Private method to get the report URL for a file scan.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__getFileScanReportUrlFinished">__getFileScanReportUrlFinished</a></td> +<td>Private slot to determine the result of the file scan report URL request.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__getIpAddressReportFinished">__getIpAddressReportFinished</a></td> +<td>Private slot to process the IP address report data.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__getUrlScanReportUrl">__getUrlScanReportUrl</a></td> +<td>Private method to get the report URL for a URL scan.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__getUrlScanReportUrlFinished">__getUrlScanReportUrlFinished</a></td> +<td>Private slot to determine the result of the URL scan report URL request.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__loadSettings">__loadSettings</a></td> +<td>Private method to load the settings.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.__submitUrlFinished">__submitUrlFinished</a></td> +<td>Private slot to determine the result of the URL scan submission.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.checkServiceKeyValidity">checkServiceKeyValidity</a></td> +<td>Public method to check the validity of the given service key.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.close">close</a></td> +<td>Public slot to close the API.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.getDomainReport">getDomainReport</a></td> +<td>Public method to retrieve a report for a domain.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.getIpAddressReport">getIpAddressReport</a></td> +<td>Public method to retrieve a report for an IP address.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.preferencesChanged">preferencesChanged</a></td> +<td>Public slot to handle a change of preferences.</td> +</tr><tr> +<td><a href="#VirusTotalAPI.submitUrl">submitUrl</a></td> +<td>Public method to submit an URL to be scanned.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="VirusTotalAPI.__init__" ID="VirusTotalAPI.__init__"></a> +<h4>VirusTotalAPI (Constructor)</h4> +<b>VirusTotalAPI</b>(<i>parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>parent</i></dt> +<dd> +reference to the parent object (QObject) +</dd> +</dl><a NAME="VirusTotalAPI.__checkServiceKeyValidityFinished" ID="VirusTotalAPI.__checkServiceKeyValidityFinished"></a> +<h4>VirusTotalAPI.__checkServiceKeyValidityFinished</h4> +<b>__checkServiceKeyValidityFinished</b>(<i></i>) +<p> + Private slot to determine the result of the service key validity check. +</p><a NAME="VirusTotalAPI.__getDomainReportFinished" ID="VirusTotalAPI.__getDomainReportFinished"></a> +<h4>VirusTotalAPI.__getDomainReportFinished</h4> +<b>__getDomainReportFinished</b>(<i></i>) +<p> + Private slot to process the IP address report data. +</p><a NAME="VirusTotalAPI.__getFileScanReportUrl" ID="VirusTotalAPI.__getFileScanReportUrl"></a> +<h4>VirusTotalAPI.__getFileScanReportUrl</h4> +<b>__getFileScanReportUrl</b>(<i>scanId</i>) +<p> + Private method to get the report URL for a file scan. +</p><dl> +<dt><i>scanId</i></dt> +<dd> +ID of the scan to get the report URL for (string) +</dd> +</dl><a NAME="VirusTotalAPI.__getFileScanReportUrlFinished" ID="VirusTotalAPI.__getFileScanReportUrlFinished"></a> +<h4>VirusTotalAPI.__getFileScanReportUrlFinished</h4> +<b>__getFileScanReportUrlFinished</b>(<i></i>) +<p> + Private slot to determine the result of the file scan report URL + request. +</p><a NAME="VirusTotalAPI.__getIpAddressReportFinished" ID="VirusTotalAPI.__getIpAddressReportFinished"></a> +<h4>VirusTotalAPI.__getIpAddressReportFinished</h4> +<b>__getIpAddressReportFinished</b>(<i></i>) +<p> + Private slot to process the IP address report data. +</p><a NAME="VirusTotalAPI.__getUrlScanReportUrl" ID="VirusTotalAPI.__getUrlScanReportUrl"></a> +<h4>VirusTotalAPI.__getUrlScanReportUrl</h4> +<b>__getUrlScanReportUrl</b>(<i>scanId</i>) +<p> + Private method to get the report URL for a URL scan. +</p><dl> +<dt><i>scanId</i></dt> +<dd> +ID of the scan to get the report URL for (string) +</dd> +</dl><a NAME="VirusTotalAPI.__getUrlScanReportUrlFinished" ID="VirusTotalAPI.__getUrlScanReportUrlFinished"></a> +<h4>VirusTotalAPI.__getUrlScanReportUrlFinished</h4> +<b>__getUrlScanReportUrlFinished</b>(<i></i>) +<p> + Private slot to determine the result of the URL scan report URL + request. +</p><a NAME="VirusTotalAPI.__loadSettings" ID="VirusTotalAPI.__loadSettings"></a> +<h4>VirusTotalAPI.__loadSettings</h4> +<b>__loadSettings</b>(<i></i>) +<p> + Private method to load the settings. +</p><a NAME="VirusTotalAPI.__submitUrlFinished" ID="VirusTotalAPI.__submitUrlFinished"></a> +<h4>VirusTotalAPI.__submitUrlFinished</h4> +<b>__submitUrlFinished</b>(<i></i>) +<p> + Private slot to determine the result of the URL scan submission. +</p><a NAME="VirusTotalAPI.checkServiceKeyValidity" ID="VirusTotalAPI.checkServiceKeyValidity"></a> +<h4>VirusTotalAPI.checkServiceKeyValidity</h4> +<b>checkServiceKeyValidity</b>(<i>key, protocol=""</i>) +<p> + Public method to check the validity of the given service key. +</p><dl> +<dt><i>key</i></dt> +<dd> +service key (string) +</dd><dt><i>protocol</i></dt> +<dd> +protocol used to access VirusTotal (string) +</dd> +</dl><a NAME="VirusTotalAPI.close" ID="VirusTotalAPI.close"></a> +<h4>VirusTotalAPI.close</h4> +<b>close</b>(<i></i>) +<p> + Public slot to close the API. +</p><a NAME="VirusTotalAPI.getDomainReport" ID="VirusTotalAPI.getDomainReport"></a> +<h4>VirusTotalAPI.getDomainReport</h4> +<b>getDomainReport</b>(<i>domain</i>) +<p> + Public method to retrieve a report for a domain. +</p><dl> +<dt><i>domain</i> (str)</dt> +<dd> +domain name +</dd> +</dl><a NAME="VirusTotalAPI.getIpAddressReport" ID="VirusTotalAPI.getIpAddressReport"></a> +<h4>VirusTotalAPI.getIpAddressReport</h4> +<b>getIpAddressReport</b>(<i>ipAddress</i>) +<p> + Public method to retrieve a report for an IP address. +</p><dl> +<dt><i>ipAddress</i> (str)</dt> +<dd> +valid IPv4 address in dotted quad notation +</dd> +</dl><a NAME="VirusTotalAPI.preferencesChanged" ID="VirusTotalAPI.preferencesChanged"></a> +<h4>VirusTotalAPI.preferencesChanged</h4> +<b>preferencesChanged</b>(<i></i>) +<p> + Public slot to handle a change of preferences. +</p><a NAME="VirusTotalAPI.submitUrl" ID="VirusTotalAPI.submitUrl"></a> +<h4>VirusTotalAPI.submitUrl</h4> +<b>submitUrl</b>(<i>url</i>) +<p> + Public method to submit an URL to be scanned. +</p><dl> +<dt><i>url</i></dt> +<dd> +url to be scanned (QUrl) +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.html Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,113 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog</h1> +<p> +Module implementing a dialog to show the VirusTotal domain report. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#VirusTotalDomainReportDialog">VirusTotalDomainReportDialog</a></td> +<td>Class implementing a dialog to show the VirusTotal domain report.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="VirusTotalDomainReportDialog" ID="VirusTotalDomainReportDialog"></a> +<h2>VirusTotalDomainReportDialog</h2> +<p> + Class implementing a dialog to show the VirusTotal domain report. +</p> +<h3>Derived from</h3> +QDialog, Ui_VirusTotalDomainReportDialog +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#VirusTotalDomainReportDialog.__init__">VirusTotalDomainReportDialog</a></td> +<td>Constructor</td> +</tr><tr> +<td><a href="#VirusTotalDomainReportDialog.on_whoisButton_clicked">on_whoisButton_clicked</a></td> +<td>Private slot to show the whois information.</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="VirusTotalDomainReportDialog.__init__" ID="VirusTotalDomainReportDialog.__init__"></a> +<h4>VirusTotalDomainReportDialog (Constructor)</h4> +<b>VirusTotalDomainReportDialog</b>(<i>domain, resolutions, urls, subdomains, bdCategory, tmCategory, wtsCategory, whois, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>domain</i> (str)</dt> +<dd> +domain name +</dd><dt><i>resolutions</i> (list of dict)</dt> +<dd> +list of resolved host names +</dd><dt><i>urls</i> (list of dict)</dt> +<dd> +list of detected URLs +</dd><dt><i>subdomains</i> (list of str)</dt> +<dd> +list of subdomains +</dd><dt><i>bdCategory</i> (str)</dt> +<dd> +BitDefender categorization +</dd><dt><i>tmCategory</i> (str)</dt> +<dd> +TrendMicro categorization +</dd><dt><i>wtsCategory</i> (str)</dt> +<dd> +Websense ThreatSeeker categorization +</dd><dt><i>whois</i> (str)</dt> +<dd> +whois information +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl><a NAME="VirusTotalDomainReportDialog.on_whoisButton_clicked" ID="VirusTotalDomainReportDialog.on_whoisButton_clicked"></a> +<h4>VirusTotalDomainReportDialog.on_whoisButton_clicked</h4> +<b>on_whoisButton_clicked</b>(<i></i>) +<p> + Private slot to show the whois information. +</p> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog.html Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,93 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog</h1> +<p> +Module implementing a dialog to show the VirusTotal IP address report. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#VirusTotalIpReportDialog">VirusTotalIpReportDialog</a></td> +<td>Class implementing a dialog to show the VirusTotal IP address report.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="VirusTotalIpReportDialog" ID="VirusTotalIpReportDialog"></a> +<h2>VirusTotalIpReportDialog</h2> +<p> + Class implementing a dialog to show the VirusTotal IP address report. +</p> +<h3>Derived from</h3> +QDialog, Ui_VirusTotalIpReportDialog +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#VirusTotalIpReportDialog.__init__">VirusTotalIpReportDialog</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="VirusTotalIpReportDialog.__init__" ID="VirusTotalIpReportDialog.__init__"></a> +<h4>VirusTotalIpReportDialog (Constructor)</h4> +<b>VirusTotalIpReportDialog</b>(<i>ip, owner, resolutions, urls, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>ip</i> (str)</dt> +<dd> +IP address +</dd><dt><i>owner</i> (str)</dt> +<dd> +owner of the IP address +</dd><dt><i>resolutions</i> (list of dict)</dt> +<dd> +list of resolved host names +</dd><dt><i>urls</i> (list of dict)</dt> +<dd> +list of detected URLs +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog.html Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,87 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body><a NAME="top" ID="top"></a> +<h1>eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog</h1> +<p> +Module implementing a dialog to show the 'whois' information. +</p> +<h3>Global Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Classes</h3> +<table> +<tr> +<td><a href="#VirusTotalWhoisDialog">VirusTotalWhoisDialog</a></td> +<td>Class implementing a dialog to show the 'whois' information.</td> +</tr> +</table> +<h3>Functions</h3> +<table> +<tr><td>None</td></tr> +</table> +<hr /><hr /> +<a NAME="VirusTotalWhoisDialog" ID="VirusTotalWhoisDialog"></a> +<h2>VirusTotalWhoisDialog</h2> +<p> + Class implementing a dialog to show the 'whois' information. +</p> +<h3>Derived from</h3> +QDialog, Ui_VirusTotalWhoisDialog +<h3>Class Attributes</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Class Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<h3>Methods</h3> +<table> +<tr> +<td><a href="#VirusTotalWhoisDialog.__init__">VirusTotalWhoisDialog</a></td> +<td>Constructor</td> +</tr> +</table> +<h3>Static Methods</h3> +<table> +<tr><td>None</td></tr> +</table> +<a NAME="VirusTotalWhoisDialog.__init__" ID="VirusTotalWhoisDialog.__init__"></a> +<h4>VirusTotalWhoisDialog (Constructor)</h4> +<b>VirusTotalWhoisDialog</b>(<i>domain, whois, parent=None</i>) +<p> + Constructor +</p><dl> +<dt><i>domain</i> (str)</dt> +<dd> +domain name +</dd><dt><i>whois</i> (str)</dt> +<dd> +whois information +</dd><dt><i>parent</i> (QWidget)</dt> +<dd> +reference to the parent widget +</dd> +</dl> +<div align="right"><a href="#top">Up</a></div> +<hr /> +</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.Helpviewer.VirusTotalApi.html Sat Jul 25 20:00:25 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,257 +0,0 @@ -<!DOCTYPE html> -<html><head> -<title>eric6.Helpviewer.VirusTotalApi</title> -<meta charset="UTF-8"> -<style> -body { - background: #EDECE6; - margin: 0em 1em 10em 1em; - color: black; -} - -h1 { color: white; background: #85774A; } -h2 { color: white; background: #85774A; } -h3 { color: white; background: #9D936E; } -h4 { color: white; background: #9D936E; } - -a { color: #BA6D36; } - -</style> -</head> -<body><a NAME="top" ID="top"></a> -<h1>eric6.Helpviewer.VirusTotalApi</h1> -<p> -Module implementing the <a href="http://www.virustotal.com">VirusTotal</a> -API class. -</p> -<h3>Global Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Classes</h3> -<table> -<tr> -<td><a href="#VirusTotalAPI">VirusTotalAPI</a></td> -<td>Class implementing the <a href="http://www.virustotal.com">VirusTotal</a> API.</td> -</tr> -</table> -<h3>Functions</h3> -<table> -<tr><td>None</td></tr> -</table> -<hr /><hr /> -<a NAME="VirusTotalAPI" ID="VirusTotalAPI"></a> -<h2>VirusTotalAPI</h2> -<p> - Class implementing the <a href="http://www.virustotal.com">VirusTotal</a> - API. -</p><h3>Signals</h3> -<dl> -<dt>checkServiceKeyFinished(bool, str)</dt> -<dd> -emitted after the service key - check has been performed. It gives a flag indicating validity - (boolean) and an error message in case of a network error (string). -</dd><dt>fileScanReport(str)</dt> -<dd> -emitted with the URL of the file scan report - page -</dd><dt>submitUrlError(str)</dt> -<dd> -emitted with the error string, if the URL scan - submission returned an error. -</dd><dt>urlScanReport(str)</dt> -<dd> -emitted with the URL of the URL scan report page -</dd> -</dl> -<h3>Derived from</h3> -QObject -<h3>Class Attributes</h3> -<table> -<tr><td>GetDomainReportPattern</td></tr><tr><td>GetFileReportPattern</td></tr><tr><td>GetIpAddressReportPattern</td></tr><tr><td>GetUrlReportPattern</td></tr><tr><td>ScanUrlPattern</td></tr><tr><td>ServiceCode_InvalidKey</td></tr><tr><td>ServiceCode_InvalidPrivilege</td></tr><tr><td>ServiceCode_RateLimitExceeded</td></tr><tr><td>ServiceResult_ItemNotPresent</td></tr><tr><td>ServiceResult_ItemPresent</td></tr><tr><td>ServiceResult_ItemQueued</td></tr><tr><td>TestServiceKeyScanID</td></tr> -</table> -<h3>Class Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Methods</h3> -<table> -<tr> -<td><a href="#VirusTotalAPI.__init__">VirusTotalAPI</a></td> -<td>Constructor</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__checkServiceKeyValidityFinished">__checkServiceKeyValidityFinished</a></td> -<td>Private slot to determine the result of the service key validity check.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__getDomainReportFinished">__getDomainReportFinished</a></td> -<td>Private slot to process the IP address report data.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__getFileScanReportUrl">__getFileScanReportUrl</a></td> -<td>Private method to get the report URL for a file scan.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__getFileScanReportUrlFinished">__getFileScanReportUrlFinished</a></td> -<td>Private slot to determine the result of the file scan report URL request.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__getIpAddressReportFinished">__getIpAddressReportFinished</a></td> -<td>Private slot to process the IP address report data.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__getUrlScanReportUrl">__getUrlScanReportUrl</a></td> -<td>Private method to get the report URL for a URL scan.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__getUrlScanReportUrlFinished">__getUrlScanReportUrlFinished</a></td> -<td>Private slot to determine the result of the URL scan report URL request.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__loadSettings">__loadSettings</a></td> -<td>Private method to load the settings.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.__submitUrlFinished">__submitUrlFinished</a></td> -<td>Private slot to determine the result of the URL scan submission.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.checkServiceKeyValidity">checkServiceKeyValidity</a></td> -<td>Public method to check the validity of the given service key.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.close">close</a></td> -<td>Public slot to close the API.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.getDomainReport">getDomainReport</a></td> -<td>Public method to retrieve a report for a domain.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.getIpAddressReport">getIpAddressReport</a></td> -<td>Public method to retrieve a report for an IP address.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.preferencesChanged">preferencesChanged</a></td> -<td>Public slot to handle a change of preferences.</td> -</tr><tr> -<td><a href="#VirusTotalAPI.submitUrl">submitUrl</a></td> -<td>Public method to submit an URL to be scanned.</td> -</tr> -</table> -<h3>Static Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<a NAME="VirusTotalAPI.__init__" ID="VirusTotalAPI.__init__"></a> -<h4>VirusTotalAPI (Constructor)</h4> -<b>VirusTotalAPI</b>(<i>parent=None</i>) -<p> - Constructor -</p><dl> -<dt><i>parent</i></dt> -<dd> -reference to the parent object (QObject) -</dd> -</dl><a NAME="VirusTotalAPI.__checkServiceKeyValidityFinished" ID="VirusTotalAPI.__checkServiceKeyValidityFinished"></a> -<h4>VirusTotalAPI.__checkServiceKeyValidityFinished</h4> -<b>__checkServiceKeyValidityFinished</b>(<i></i>) -<p> - Private slot to determine the result of the service key validity check. -</p><a NAME="VirusTotalAPI.__getDomainReportFinished" ID="VirusTotalAPI.__getDomainReportFinished"></a> -<h4>VirusTotalAPI.__getDomainReportFinished</h4> -<b>__getDomainReportFinished</b>(<i></i>) -<p> - Private slot to process the IP address report data. -</p><a NAME="VirusTotalAPI.__getFileScanReportUrl" ID="VirusTotalAPI.__getFileScanReportUrl"></a> -<h4>VirusTotalAPI.__getFileScanReportUrl</h4> -<b>__getFileScanReportUrl</b>(<i>scanId</i>) -<p> - Private method to get the report URL for a file scan. -</p><dl> -<dt><i>scanId</i></dt> -<dd> -ID of the scan to get the report URL for (string) -</dd> -</dl><a NAME="VirusTotalAPI.__getFileScanReportUrlFinished" ID="VirusTotalAPI.__getFileScanReportUrlFinished"></a> -<h4>VirusTotalAPI.__getFileScanReportUrlFinished</h4> -<b>__getFileScanReportUrlFinished</b>(<i></i>) -<p> - Private slot to determine the result of the file scan report URL - request. -</p><a NAME="VirusTotalAPI.__getIpAddressReportFinished" ID="VirusTotalAPI.__getIpAddressReportFinished"></a> -<h4>VirusTotalAPI.__getIpAddressReportFinished</h4> -<b>__getIpAddressReportFinished</b>(<i></i>) -<p> - Private slot to process the IP address report data. -</p><a NAME="VirusTotalAPI.__getUrlScanReportUrl" ID="VirusTotalAPI.__getUrlScanReportUrl"></a> -<h4>VirusTotalAPI.__getUrlScanReportUrl</h4> -<b>__getUrlScanReportUrl</b>(<i>scanId</i>) -<p> - Private method to get the report URL for a URL scan. -</p><dl> -<dt><i>scanId</i></dt> -<dd> -ID of the scan to get the report URL for (string) -</dd> -</dl><a NAME="VirusTotalAPI.__getUrlScanReportUrlFinished" ID="VirusTotalAPI.__getUrlScanReportUrlFinished"></a> -<h4>VirusTotalAPI.__getUrlScanReportUrlFinished</h4> -<b>__getUrlScanReportUrlFinished</b>(<i></i>) -<p> - Private slot to determine the result of the URL scan report URL - request. -</p><a NAME="VirusTotalAPI.__loadSettings" ID="VirusTotalAPI.__loadSettings"></a> -<h4>VirusTotalAPI.__loadSettings</h4> -<b>__loadSettings</b>(<i></i>) -<p> - Private method to load the settings. -</p><a NAME="VirusTotalAPI.__submitUrlFinished" ID="VirusTotalAPI.__submitUrlFinished"></a> -<h4>VirusTotalAPI.__submitUrlFinished</h4> -<b>__submitUrlFinished</b>(<i></i>) -<p> - Private slot to determine the result of the URL scan submission. -</p><a NAME="VirusTotalAPI.checkServiceKeyValidity" ID="VirusTotalAPI.checkServiceKeyValidity"></a> -<h4>VirusTotalAPI.checkServiceKeyValidity</h4> -<b>checkServiceKeyValidity</b>(<i>key, protocol=""</i>) -<p> - Public method to check the validity of the given service key. -</p><dl> -<dt><i>key</i></dt> -<dd> -service key (string) -</dd><dt><i>protocol</i></dt> -<dd> -protocol used to access VirusTotal (string) -</dd> -</dl><a NAME="VirusTotalAPI.close" ID="VirusTotalAPI.close"></a> -<h4>VirusTotalAPI.close</h4> -<b>close</b>(<i></i>) -<p> - Public slot to close the API. -</p><a NAME="VirusTotalAPI.getDomainReport" ID="VirusTotalAPI.getDomainReport"></a> -<h4>VirusTotalAPI.getDomainReport</h4> -<b>getDomainReport</b>(<i>domain</i>) -<p> - Public method to retrieve a report for a domain. -</p><dl> -<dt><i>domain</i> (str)</dt> -<dd> -domain name -</dd> -</dl><a NAME="VirusTotalAPI.getIpAddressReport" ID="VirusTotalAPI.getIpAddressReport"></a> -<h4>VirusTotalAPI.getIpAddressReport</h4> -<b>getIpAddressReport</b>(<i>ipAddress</i>) -<p> - Public method to retrieve a report for an IP address. -</p><dl> -<dt><i>ipAddress</i> (str)</dt> -<dd> -valid IPv4 address in dotted quad notation -</dd> -</dl><a NAME="VirusTotalAPI.preferencesChanged" ID="VirusTotalAPI.preferencesChanged"></a> -<h4>VirusTotalAPI.preferencesChanged</h4> -<b>preferencesChanged</b>(<i></i>) -<p> - Public slot to handle a change of preferences. -</p><a NAME="VirusTotalAPI.submitUrl" ID="VirusTotalAPI.submitUrl"></a> -<h4>VirusTotalAPI.submitUrl</h4> -<b>submitUrl</b>(<i>url</i>) -<p> - Public method to submit an URL to be scanned. -</p><dl> -<dt><i>url</i></dt> -<dd> -url to be scanned (QUrl) -</dd> -</dl> -<div align="right"><a href="#top">Up</a></div> -<hr /> -</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.Helpviewer.VirusTotalDomainReportDialog.html Sat Jul 25 20:00:25 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,105 +0,0 @@ -<!DOCTYPE html> -<html><head> -<title>eric6.Helpviewer.VirusTotalDomainReportDialog</title> -<meta charset="UTF-8"> -<style> -body { - background: #EDECE6; - margin: 0em 1em 10em 1em; - color: black; -} - -h1 { color: white; background: #85774A; } -h2 { color: white; background: #85774A; } -h3 { color: white; background: #9D936E; } -h4 { color: white; background: #9D936E; } - -a { color: #BA6D36; } - -</style> -</head> -<body><a NAME="top" ID="top"></a> -<h1>eric6.Helpviewer.VirusTotalDomainReportDialog</h1> -<p> -Module implementing a dialog to show the VirusTotal domain report. -</p> -<h3>Global Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Classes</h3> -<table> -<tr> -<td><a href="#VirusTotalDomainReportDialog">VirusTotalDomainReportDialog</a></td> -<td>Class implementing a dialog to show the VirusTotal domain report.</td> -</tr> -</table> -<h3>Functions</h3> -<table> -<tr><td>None</td></tr> -</table> -<hr /><hr /> -<a NAME="VirusTotalDomainReportDialog" ID="VirusTotalDomainReportDialog"></a> -<h2>VirusTotalDomainReportDialog</h2> -<p> - Class implementing a dialog to show the VirusTotal domain report. -</p> -<h3>Derived from</h3> -QDialog, Ui_VirusTotalDomainReportDialog -<h3>Class Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Class Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Methods</h3> -<table> -<tr> -<td><a href="#VirusTotalDomainReportDialog.__init__">VirusTotalDomainReportDialog</a></td> -<td>Constructor</td> -</tr> -</table> -<h3>Static Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<a NAME="VirusTotalDomainReportDialog.__init__" ID="VirusTotalDomainReportDialog.__init__"></a> -<h4>VirusTotalDomainReportDialog (Constructor)</h4> -<b>VirusTotalDomainReportDialog</b>(<i>domain, resolutions, urls, subdomains, bdCategory, tmCategory, wtsCategory, categories, parent=None</i>) -<p> - Constructor -</p><dl> -<dt><i>domain</i> (str)</dt> -<dd> -domain name -</dd><dt><i>resolutions</i> (list of dict)</dt> -<dd> -list of resolved host names -</dd><dt><i>urls</i> (list of dict)</dt> -<dd> -list of detected URLs -</dd><dt><i>subdomains</i> (list of str)</dt> -<dd> -list of subdomains -</dd><dt><i>bdCategory</i> (str)</dt> -<dd> -BitDefender categorization -</dd><dt><i>tmCategory</i> (str)</dt> -<dd> -TrendMicro categorization -</dd><dt><i>wtsCategory</i> (str)</dt> -<dd> -Websense ThreatSeeker categorization -</dd><dt><i>categories</i> (list of str)</dt> -<dd> -list of categorizations -</dd><dt><i>parent</i> (QWidget)</dt> -<dd> -reference to the parent widget -</dd> -</dl> -<div align="right"><a href="#top">Up</a></div> -<hr /> -</body></html> \ No newline at end of file
--- a/Documentation/Source/eric6.Helpviewer.VirusTotalIpReportDialog.html Sat Jul 25 20:00:25 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,93 +0,0 @@ -<!DOCTYPE html> -<html><head> -<title>eric6.Helpviewer.VirusTotalIpReportDialog</title> -<meta charset="UTF-8"> -<style> -body { - background: #EDECE6; - margin: 0em 1em 10em 1em; - color: black; -} - -h1 { color: white; background: #85774A; } -h2 { color: white; background: #85774A; } -h3 { color: white; background: #9D936E; } -h4 { color: white; background: #9D936E; } - -a { color: #BA6D36; } - -</style> -</head> -<body><a NAME="top" ID="top"></a> -<h1>eric6.Helpviewer.VirusTotalIpReportDialog</h1> -<p> -Module implementing a dialog to show the VirusTotal IP address report. -</p> -<h3>Global Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Classes</h3> -<table> -<tr> -<td><a href="#VirusTotalIpReportDialog">VirusTotalIpReportDialog</a></td> -<td>Class implementing a dialog to show the VirusTotal IP address report.</td> -</tr> -</table> -<h3>Functions</h3> -<table> -<tr><td>None</td></tr> -</table> -<hr /><hr /> -<a NAME="VirusTotalIpReportDialog" ID="VirusTotalIpReportDialog"></a> -<h2>VirusTotalIpReportDialog</h2> -<p> - Class implementing a dialog to show the VirusTotal IP address report. -</p> -<h3>Derived from</h3> -QDialog, Ui_VirusTotalIpReportDialog -<h3>Class Attributes</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Class Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<h3>Methods</h3> -<table> -<tr> -<td><a href="#VirusTotalIpReportDialog.__init__">VirusTotalIpReportDialog</a></td> -<td>Constructor</td> -</tr> -</table> -<h3>Static Methods</h3> -<table> -<tr><td>None</td></tr> -</table> -<a NAME="VirusTotalIpReportDialog.__init__" ID="VirusTotalIpReportDialog.__init__"></a> -<h4>VirusTotalIpReportDialog (Constructor)</h4> -<b>VirusTotalIpReportDialog</b>(<i>ip, owner, resolutions, urls, parent=None</i>) -<p> - Constructor -</p><dl> -<dt><i>ip</i> (str)</dt> -<dd> -IP address -</dd><dt><i>owner</i> (str)</dt> -<dd> -owner of the IP address -</dd><dt><i>resolutions</i> (list of dict)</dt> -<dd> -list of resolved host names -</dd><dt><i>urls</i> (list of dict)</dt> -<dd> -list of detected URLs -</dd><dt><i>parent</i> (QWidget)</dt> -<dd> -reference to the parent widget -</dd> -</dl> -<div align="right"><a href="#top">Up</a></div> -<hr /> -</body></html> \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Documentation/Source/index-eric6.Helpviewer.VirusTotal.html Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,44 @@ +<!DOCTYPE html> +<html><head> +<title>eric6.Helpviewer.VirusTotal</title> +<meta charset="UTF-8"> +<style> +body { + background: #EDECE6; + margin: 0em 1em 10em 1em; + color: black; +} + +h1 { color: white; background: #85774A; } +h2 { color: white; background: #85774A; } +h3 { color: white; background: #9D936E; } +h4 { color: white; background: #9D936E; } + +a { color: #BA6D36; } + +</style> +</head> +<body> +<h1>eric6.Helpviewer.VirusTotal</h1> +<p> +Package containing the VirusTotal interface. +</p> + + +<h3>Modules</h3> +<table> +<tr> +<td><a href="eric6.Helpviewer.VirusTotal.VirusTotalApi.html">VirusTotalApi</a></td> +<td>Module implementing the <a href="http://www.virustotal.com">VirusTotal</a> API class.</td> +</tr><tr> +<td><a href="eric6.Helpviewer.VirusTotal.VirusTotalDomainReportDialog.html">VirusTotalDomainReportDialog</a></td> +<td>Module implementing a dialog to show the VirusTotal domain report.</td> +</tr><tr> +<td><a href="eric6.Helpviewer.VirusTotal.VirusTotalIpReportDialog.html">VirusTotalIpReportDialog</a></td> +<td>Module implementing a dialog to show the VirusTotal IP address report.</td> +</tr><tr> +<td><a href="eric6.Helpviewer.VirusTotal.VirusTotalWhoisDialog.html">VirusTotalWhoisDialog</a></td> +<td>Module implementing a dialog to show the 'whois' information.</td> +</tr> +</table> +</body></html> \ No newline at end of file
--- a/Documentation/Source/index-eric6.Helpviewer.html Sat Jul 25 20:00:25 2015 +0200 +++ b/Documentation/Source/index-eric6.Helpviewer.html Sun Jul 26 11:12:08 2015 +0200 @@ -83,6 +83,9 @@ <td><a href="index-eric6.Helpviewer.UserAgent.html">UserAgent</a></td> <td>Package implementing a menu to select the user agent string.</td> </tr><tr> +<td><a href="index-eric6.Helpviewer.VirusTotal.html">VirusTotal</a></td> +<td>Package containing the VirusTotal interface.</td> +</tr><tr> <td><a href="index-eric6.Helpviewer.WebPlugins.html">WebPlugins</a></td> <td>Package implementing web plug-ins for the eric6 web browser.</td> </tr><tr> @@ -156,15 +159,6 @@ </tr><tr> <td><a href="eric6.Helpviewer.SearchWidget.html">SearchWidget</a></td> <td>Module implementing the search bar for the web browser.</td> -</tr><tr> -<td><a href="eric6.Helpviewer.VirusTotalApi.html">VirusTotalApi</a></td> -<td>Module implementing the <a href="http://www.virustotal.com">VirusTotal</a> API class.</td> -</tr><tr> -<td><a href="eric6.Helpviewer.VirusTotalDomainReportDialog.html">VirusTotalDomainReportDialog</a></td> -<td>Module implementing a dialog to show the VirusTotal domain report.</td> -</tr><tr> -<td><a href="eric6.Helpviewer.VirusTotalIpReportDialog.html">VirusTotalIpReportDialog</a></td> -<td>Module implementing a dialog to show the VirusTotal IP address report.</td> </tr> </table> </body></html> \ No newline at end of file
--- a/Helpviewer/HelpWindow.py Sat Jul 25 20:00:25 2015 +0200 +++ b/Helpviewer/HelpWindow.py Sun Jul 26 11:12:08 2015 +0200 @@ -129,7 +129,7 @@ from .HelpBrowserWV import HelpBrowser from .HelpTabWidget import HelpTabWidget from .AdBlock.AdBlockIcon import AdBlockIcon - from .VirusTotalApi import VirusTotalAPI + from .VirusTotal.VirusTotalApi import VirusTotalAPI HelpWindow.setUseQtHelp(self.fromEric)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/VirusTotal/VirusTotalApi.py Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,410 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2011 - 2015 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing the <a href="http://www.virustotal.com">VirusTotal</a> +API class. +""" + +from __future__ import unicode_literals +try: + str = unicode +except NameError: + pass + +import json + +from PyQt5.QtCore import QObject, QUrl, QByteArray, pyqtSignal, qVersion +from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply + +from E5Gui import E5MessageBox + +import Preferences + + +class VirusTotalAPI(QObject): + """ + Class implementing the <a href="http://www.virustotal.com">VirusTotal</a> + API. + + @signal checkServiceKeyFinished(bool, str) emitted after the service key + check has been performed. It gives a flag indicating validity + (boolean) and an error message in case of a network error (string). + @signal submitUrlError(str) emitted with the error string, if the URL scan + submission returned an error. + @signal urlScanReport(str) emitted with the URL of the URL scan report page + @signal fileScanReport(str) emitted with the URL of the file scan report + page + """ + checkServiceKeyFinished = pyqtSignal(bool, str) + submitUrlError = pyqtSignal(str) + urlScanReport = pyqtSignal(str) + fileScanReport = pyqtSignal(str) + + TestServiceKeyScanID = \ + "4feed2c2e352f105f6188efd1d5a558f24aee6971bdf96d5fdb19c197d6d3fad" + + ServiceResult_ItemQueued = -2 + ServiceResult_ItemNotPresent = 0 + ServiceResult_ItemPresent = 1 + + # HTTP Status Codes + ServiceCode_InvalidKey = 202 + ServiceCode_RateLimitExceeded = 204 + ServiceCode_InvalidPrivilege = 403 + + GetFileReportPattern = "{0}://www.virustotal.com/vtapi/v2/file/report" + ScanUrlPattern = "{0}://www.virustotal.com/vtapi/v2/url/scan" + GetUrlReportPattern = "{0}://www.virustotal.com/vtapi/v2/url/report" + GetIpAddressReportPattern = \ + "{0}://www.virustotal.com/vtapi/v2/ip-address/report" + GetDomainReportPattern = "{0}://www.virustotal.com/vtapi/v2/domain/report" + + def __init__(self, parent=None): + """ + Constructor + + @param parent reference to the parent object (QObject) + """ + super(VirusTotalAPI, self).__init__(parent) + + self.__replies = [] + + self.__loadSettings() + + self.__lastIP = "" + self.__lastDomain = "" + self.__ipReportDlg = None + self.__domainReportDlg = None + + def __loadSettings(self): + """ + Private method to load the settings. + """ + if Preferences.getHelp("VirusTotalSecure"): + protocol = "https" + else: + protocol = "http" + self.GetFileReportUrl = self.GetFileReportPattern.format(protocol) + self.ScanUrlUrl = self.ScanUrlPattern.format(protocol) + self.GetUrlReportUrl = self.GetUrlReportPattern.format(protocol) + self.GetIpAddressReportUrl = self.GetIpAddressReportPattern.format( + protocol) + self.GetDomainReportUrl = self.GetDomainReportPattern.format(protocol) + + self.errorMessages = { + 204: self.tr("Request limit has been reached."), + 0: self.tr("Requested item is not present."), + -2: self.tr("Requested item is still queued."), + } + + def preferencesChanged(self): + """ + Public slot to handle a change of preferences. + """ + self.__loadSettings() + + def checkServiceKeyValidity(self, key, protocol=""): + """ + Public method to check the validity of the given service key. + + @param key service key (string) + @param protocol protocol used to access VirusTotal (string) + """ + if protocol == "": + urlStr = self.GetFileReportUrl + else: + urlStr = self.GetFileReportPattern.format(protocol) + request = QNetworkRequest(QUrl(urlStr)) + request.setHeader(QNetworkRequest.ContentTypeHeader, + "application/x-www-form-urlencoded") + params = QByteArray("apikey={0}&resource={1}".format( + key, self.TestServiceKeyScanID).encode("utf-8")) + + import Helpviewer.HelpWindow + nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() + reply = nam.post(request, params) + reply.finished.connect(self.__checkServiceKeyValidityFinished) + self.__replies.append(reply) + + def __checkServiceKeyValidityFinished(self): + """ + Private slot to determine the result of the service key validity check. + """ + res = False + msg = "" + + reply = self.sender() + if reply.error() == QNetworkReply.NoError: + res = True + elif reply.error() == self.ServiceCode_InvalidKey: + res = False + else: + msg = reply.errorString() + self.__replies.remove(reply) + reply.deleteLater() + + self.checkServiceKeyFinished.emit(res, msg) + + def submitUrl(self, url): + """ + Public method to submit an URL to be scanned. + + @param url url to be scanned (QUrl) + """ + request = QNetworkRequest(QUrl(self.ScanUrlUrl)) + request.setHeader(QNetworkRequest.ContentTypeHeader, + "application/x-www-form-urlencoded") + params = QByteArray("apikey={0}&url=".format( + Preferences.getHelp("VirusTotalServiceKey")).encode("utf-8"))\ + .append(QUrl.toPercentEncoding(url.toString())) + + import Helpviewer.HelpWindow + nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() + reply = nam.post(request, params) + reply.finished.connect(self.__submitUrlFinished) + self.__replies.append(reply) + + def __submitUrlFinished(self): + """ + Private slot to determine the result of the URL scan submission. + """ + reply = self.sender() + if reply.error() == QNetworkReply.NoError: + result = json.loads(str(reply.readAll(), "utf-8")) + if result["response_code"] == self.ServiceResult_ItemPresent: + self.urlScanReport.emit(result["permalink"]) + self.__getUrlScanReportUrl(result["scan_id"]) + else: + if result["response_code"] in self.errorMessages: + msg = self.errorMessages[result["response_code"]] + else: + msg = result["verbose_msg"] + self.submitUrlError.emit(msg) + elif reply.error() == self.ServiceCode_RateLimitExceeded: + self.submitUrlError.emit( + self.errorMessages[result[self.ServiceCode_RateLimitExceeded]]) + else: + self.submitUrlError.emit(reply.errorString()) + self.__replies.remove(reply) + reply.deleteLater() + + def __getUrlScanReportUrl(self, scanId): + """ + Private method to get the report URL for a URL scan. + + @param scanId ID of the scan to get the report URL for (string) + """ + request = QNetworkRequest(QUrl(self.GetUrlReportUrl)) + request.setHeader(QNetworkRequest.ContentTypeHeader, + "application/x-www-form-urlencoded") + params = QByteArray("apikey={0}&resource={1}".format( + Preferences.getHelp("VirusTotalServiceKey"), scanId) + .encode("utf-8")) + + import Helpviewer.HelpWindow + nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() + reply = nam.post(request, params) + reply.finished.connect(self.__getUrlScanReportUrlFinished) + self.__replies.append(reply) + + def __getUrlScanReportUrlFinished(self): + """ + Private slot to determine the result of the URL scan report URL + request. + """ + reply = self.sender() + if reply.error() == QNetworkReply.NoError: + result = json.loads(str(reply.readAll(), "utf-8")) + if "filescan_id" in result and result["filescan_id"] is not None: + self.__getFileScanReportUrl(result["filescan_id"]) + self.__replies.remove(reply) + reply.deleteLater() + + def __getFileScanReportUrl(self, scanId): + """ + Private method to get the report URL for a file scan. + + @param scanId ID of the scan to get the report URL for (string) + """ + request = QNetworkRequest(QUrl(self.GetFileReportUrl)) + request.setHeader(QNetworkRequest.ContentTypeHeader, + "application/x-www-form-urlencoded") + params = QByteArray("apikey={0}&resource={1}".format( + Preferences.getHelp("VirusTotalServiceKey"), scanId) + .encode("utf-8")) + + import Helpviewer.HelpWindow + nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() + reply = nam.post(request, params) + reply.finished.connect(self.__getFileScanReportUrlFinished) + self.__replies.append(reply) + + def __getFileScanReportUrlFinished(self): + """ + Private slot to determine the result of the file scan report URL + request. + """ + reply = self.sender() + if reply.error() == QNetworkReply.NoError: + result = json.loads(str(reply.readAll(), "utf-8")) + self.fileScanReport.emit(result["permalink"]) + self.__replies.remove(reply) + reply.deleteLater() + + def getIpAddressReport(self, ipAddress): + """ + Public method to retrieve a report for an IP address. + + @param ipAddress valid IPv4 address in dotted quad notation + @type str + """ + self.__lastIP = ipAddress + + queryItems = [ + ("apikey", Preferences.getHelp("VirusTotalServiceKey")), + ("ip", ipAddress), + ] + url = QUrl(self.GetIpAddressReportUrl) + if qVersion() >= "5.0.0": + from PyQt5.QtCore import QUrlQuery + query = QUrlQuery() + query.setQueryItems(queryItems) + url.setQuery(query) + else: + url.setQueryItems(queryItems) + request = QNetworkRequest(url) + + import Helpviewer.HelpWindow + nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() + reply = nam.get(request) + reply.finished.connect(self.__getIpAddressReportFinished) + self.__replies.append(reply) + + def __getIpAddressReportFinished(self): + """ + Private slot to process the IP address report data. + """ + reply = self.sender() + if reply.error() == QNetworkReply.NoError: + result = json.loads(str(reply.readAll(), "utf-8")) + if result["response_code"] == 0: + E5MessageBox.information( + None, + self.tr("VirusTotal IP Address Report"), + self.tr("""VirusTotal does not have any information for""" + """ the given IP address.""")) + elif result["response_code"] == -1: + E5MessageBox.information( + None, + self.tr("VirusTotal IP Address Report"), + self.tr("""The submitted IP address is invalid.""")) + else: + owner = result["as_owner"] + resolutions = result["resolutions"] + try: + urls = result["detected_urls"] + except KeyError: + urls = [] + + from .VirusTotalIpReportDialog import VirusTotalIpReportDialog + self.__ipReportDlg = VirusTotalIpReportDialog( + self.__lastIP, owner, resolutions, urls) + self.__ipReportDlg.show() + self.__replies.remove(reply) + reply.deleteLater() + + def getDomainReport(self, domain): + """ + Public method to retrieve a report for a domain. + + @param domain domain name + @type str + """ + self.__lastDomain = domain + + queryItems = [ + ("apikey", Preferences.getHelp("VirusTotalServiceKey")), + ("domain", domain), + ] + url = QUrl(self.GetDomainReportUrl) + if qVersion() >= "5.0.0": + from PyQt5.QtCore import QUrlQuery + query = QUrlQuery() + query.setQueryItems(queryItems) + url.setQuery(query) + else: + url.setQueryItems(queryItems) + request = QNetworkRequest(url) + + import Helpviewer.HelpWindow + nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() + reply = nam.get(request) + reply.finished.connect(self.__getDomainReportFinished) + self.__replies.append(reply) + + def __getDomainReportFinished(self): + """ + Private slot to process the IP address report data. + """ + reply = self.sender() + if reply.error() == QNetworkReply.NoError: + result = json.loads(str(reply.readAll(), "utf-8")) + if result["response_code"] == 0: + E5MessageBox.information( + None, + self.tr("VirusTotal Domain Report"), + self.tr("""VirusTotal does not have any information for""" + """ the given domain.""")) + elif result["response_code"] == -1: + E5MessageBox.information( + None, + self.tr("VirusTotal Domain Report"), + self.tr("""The submitted domain address is invalid.""")) + else: + resolutions = result["resolutions"] + try: + urls = result["detected_urls"] + except KeyError: + urls = [] + try: + subdomains = result["subdomains"] + except KeyError: + subdomains = [] + try: + bdCategory = result["BitDefender category"] + except KeyError: + bdCategory = self.tr("not available") + try: + tmCategory = result["TrendMicro category"] + except KeyError: + tmCategory = self.tr("not available") + try: + wtsCategory = result["Websense ThreatSeeker category"] + except KeyError: + wtsCategory = self.tr("not available") + try: + whois = result["whois"] + except KeyError: + whois = "" + + from .VirusTotalDomainReportDialog import \ + VirusTotalDomainReportDialog + self.__domainReportDlg = VirusTotalDomainReportDialog( + self.__lastDomain, resolutions, urls, subdomains, + bdCategory, tmCategory, wtsCategory, whois) + self.__domainReportDlg.show() + self.__replies.remove(reply) + reply.deleteLater() + + def close(self): + """ + Public slot to close the API. + """ + for reply in self.__replies: + reply.abort() + + self.__ipReportDlg and self.__ipReportDlg.close() + self.__domainReportDlg and self.__domainReportDlg.close()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/VirusTotal/VirusTotalDomainReportDialog.py Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,103 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to show the VirusTotal domain report. +""" + +from __future__ import unicode_literals + +from PyQt5.QtCore import pyqtSlot, Qt +from PyQt5.QtWidgets import QDialog, QTreeWidgetItem + +from .Ui_VirusTotalDomainReportDialog import Ui_VirusTotalDomainReportDialog + +import UI.PixmapCache + + +class VirusTotalDomainReportDialog(QDialog, Ui_VirusTotalDomainReportDialog): + """ + Class implementing a dialog to show the VirusTotal domain report. + """ + def __init__(self, domain, resolutions, urls, subdomains, + bdCategory, tmCategory, wtsCategory, whois, parent=None): + """ + Constructor + + @param domain domain name + @type str + @param resolutions list of resolved host names + @type list of dict + @param urls list of detected URLs + @type list of dict + @param subdomains list of subdomains + @type list of str + @param bdCategory BitDefender categorization + @type str + @param tmCategory TrendMicro categorization + @type str + @param wtsCategory Websense ThreatSeeker categorization + @type str + @param whois whois information + @type str + @param parent reference to the parent widget + @type QWidget + """ + super(VirusTotalDomainReportDialog, self).__init__(parent) + self.setupUi(self) + self.setWindowFlags(Qt.Window) + + self.headerLabel.setText( + self.tr("<b>Report for domain {0}</b>").format(domain)) + self.headerPixmap.setPixmap( + UI.PixmapCache.getPixmap("virustotal.png")) + + for resolution in resolutions: + QTreeWidgetItem( + self.resolutionsList, + [resolution["ip_address"], + resolution["last_resolved"].split()[0]] + ) + self.resolutionsList.resizeColumnToContents(0) + self.resolutionsList.resizeColumnToContents(1) + self.resolutionsList.sortByColumn(0, Qt.AscendingOrder) + + if not urls: + self.detectedUrlsGroup.setVisible(False) + for url in urls: + QTreeWidgetItem( + self.urlsList, + [url["url"], + self.tr("{0}/{1}", "positives / total").format( + url["positives"], url["total"]), + url["scan_date"].split()[0]] + ) + self.urlsList.resizeColumnToContents(0) + self.urlsList.resizeColumnToContents(1) + self.urlsList.resizeColumnToContents(2) + self.urlsList.sortByColumn(0, Qt.AscendingOrder) + + if not subdomains: + self.subdomainsGroup.setVisible(False) + else: + self.subdomainsList.addItems(subdomains) + self.subdomainsList.sortItems() + + self.bdLabel.setText(bdCategory) + self.tmLabel.setText(tmCategory) + self.wtsLabel.setText(wtsCategory) + + self.__whois = whois + self.__whoisDomain = domain + self.whoisButton.setEnabled(bool(whois)) + + @pyqtSlot() + def on_whoisButton_clicked(self): + """ + Private slot to show the whois information. + """ + from .VirusTotalWhoisDialog import VirusTotalWhoisDialog + dlg = VirusTotalWhoisDialog(self.__whoisDomain, self.__whois) + dlg.exec_()
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,304 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>VirusTotalDomainReportDialog</class> + <widget class="QDialog" name="VirusTotalDomainReportDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>900</width> + <height>700</height> + </rect> + </property> + <property name="windowTitle"> + <string>Domain Report</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout_4"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QLabel" name="headerPixmap"/> + </item> + <item> + <widget class="QLabel" name="headerLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line9_3"> + <property name="frameShape"> + <enum>QFrame::HLine</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Sunken</enum> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_3"> + <item> + <widget class="QGroupBox" name="groupBox"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Categorizations</string> + </property> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <layout class="QGridLayout" name="gridLayout"> + <item row="0" column="0"> + <widget class="QLabel" name="label"> + <property name="text"> + <string notr="true">BitDefender:</string> + </property> + </widget> + </item> + <item row="0" column="1"> + <widget class="QLabel" name="bdLabel"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string notr="true">TrendMicro:</string> + </property> + </widget> + </item> + <item row="1" column="1"> + <widget class="QLabel" name="tmLabel"> + <property name="text"> + <string/> + </property> + </widget> + </item> + <item row="2" column="0"> + <widget class="QLabel" name="label_3"> + <property name="text"> + <string notr="true">Websense ThreatSeeker:</string> + </property> + </widget> + </item> + <item row="2" column="1"> + <widget class="QLabel" name="wtsLabel"> + <property name="text"> + <string/> + </property> + </widget> + </item> + </layout> + </item> + <item> + <spacer name="horizontalSpacer"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="sizeHint" stdset="0"> + <size> + <width>690</width> + <height>20</height> + </size> + </property> + </spacer> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QPushButton" name="whoisButton"> + <property name="text"> + <string>Whois</string> + </property> + </widget> + </item> + </layout> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_2"> + <item> + <widget class="QGroupBox" name="resolutionsGroup"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>4</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Resolutions</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QTreeWidget" name="resolutionsList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>IP-Address</string> + </property> + </column> + <column> + <property name="text"> + <string>Resolved Date</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="subdomainsGroup"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>4</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Subdomains</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <widget class="QListWidget" name="subdomainsList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + </widget> + </item> + </layout> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QGroupBox" name="detectedUrlsGroup"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>2</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Detected URLs</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QTreeWidget" name="urlsList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>URL</string> + </property> + </column> + <column> + <property name="text"> + <string>Scan Result</string> + </property> + </column> + <column> + <property name="text"> + <string>Scan Date</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <tabstops> + <tabstop>whoisButton</tabstop> + <tabstop>resolutionsList</tabstop> + <tabstop>subdomainsList</tabstop> + <tabstop>urlsList</tabstop> + </tabstops> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>VirusTotalDomainReportDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>VirusTotalDomainReportDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/VirusTotal/VirusTotalIpReportDialog.py Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,72 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to show the VirusTotal IP address report. +""" + +from __future__ import unicode_literals + +from PyQt5.QtCore import Qt +from PyQt5.QtWidgets import QDialog, QTreeWidgetItem + +from .Ui_VirusTotalIpReportDialog import Ui_VirusTotalIpReportDialog + +import UI.PixmapCache + + +class VirusTotalIpReportDialog(QDialog, Ui_VirusTotalIpReportDialog): + """ + Class implementing a dialog to show the VirusTotal IP address report. + """ + def __init__(self, ip, owner, resolutions, urls, parent=None): + """ + Constructor + + @param ip IP address + @type str + @param owner owner of the IP address + @type str + @param resolutions list of resolved host names + @type list of dict + @param urls list of detected URLs + @type list of dict + @param parent reference to the parent widget + @type QWidget + """ + super(VirusTotalIpReportDialog, self).__init__(parent) + self.setupUi(self) + self.setWindowFlags(Qt.Window) + + self.headerLabel.setText( + self.tr("<b>Report for IP {0}</b>").format(ip)) + self.headerPixmap.setPixmap( + UI.PixmapCache.getPixmap("virustotal.png")) + self.ownerLabel.setText(owner) + + for resolution in resolutions: + QTreeWidgetItem( + self.resolutionsList, + [resolution["hostname"], + resolution["last_resolved"].split()[0]] + ) + self.resolutionsList.resizeColumnToContents(0) + self.resolutionsList.resizeColumnToContents(1) + self.resolutionsList.sortByColumn(0, Qt.AscendingOrder) + + if not urls: + self.detectedUrlsGroup.setVisible(False) + for url in urls: + QTreeWidgetItem( + self.urlsList, + [url["url"], + self.tr("{0}/{1}", "positives / total").format( + url["positives"], url["total"]), + url["scan_date"].split()[0]] + ) + self.urlsList.resizeColumnToContents(0) + self.urlsList.resizeColumnToContents(1) + self.urlsList.resizeColumnToContents(2) + self.urlsList.sortByColumn(0, Qt.AscendingOrder)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,208 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>VirusTotalIpReportDialog</class> + <widget class="QDialog" name="VirusTotalIpReportDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>800</width> + <height>600</height> + </rect> + </property> + <property name="windowTitle"> + <string>IP Address Report</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QLabel" name="headerPixmap"/> + </item> + <item> + <widget class="QLabel" name="headerLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line9_3"> + <property name="frameShape"> + <enum>QFrame::HLine</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Sunken</enum> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <layout class="QHBoxLayout" name="horizontalLayout"> + <item> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Owner:</string> + </property> + </widget> + </item> + <item> + <widget class="QLabel" name="ownerLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="text"> + <string/> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="QGroupBox" name="resolutionsGroup"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>4</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Resolutions</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_2"> + <item> + <widget class="QTreeWidget" name="resolutionsList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>Hostname</string> + </property> + </column> + <column> + <property name="text"> + <string>Resolved Date</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QGroupBox" name="detectedUrlsGroup"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>2</verstretch> + </sizepolicy> + </property> + <property name="title"> + <string>Detected URLs</string> + </property> + <layout class="QVBoxLayout" name="verticalLayout_3"> + <item> + <widget class="QTreeWidget" name="urlsList"> + <property name="alternatingRowColors"> + <bool>true</bool> + </property> + <property name="rootIsDecorated"> + <bool>false</bool> + </property> + <property name="sortingEnabled"> + <bool>true</bool> + </property> + <property name="allColumnsShowFocus"> + <bool>true</bool> + </property> + <column> + <property name="text"> + <string>URL</string> + </property> + </column> + <column> + <property name="text"> + <string>Scan Result</string> + </property> + </column> + <column> + <property name="text"> + <string>Scan Date</string> + </property> + </column> + </widget> + </item> + </layout> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>VirusTotalIpReportDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>VirusTotalIpReportDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/VirusTotal/VirusTotalWhoisDialog.py Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Module implementing a dialog to show the 'whois' information. +""" + +from PyQt5.QtWidgets import QDialog + +from .Ui_VirusTotalWhoisDialog import Ui_VirusTotalWhoisDialog + +import UI.PixmapCache + + +class VirusTotalWhoisDialog(QDialog, Ui_VirusTotalWhoisDialog): + """ + Class implementing a dialog to show the 'whois' information. + """ + def __init__(self, domain, whois, parent=None): + """ + Constructor + + @param domain domain name + @type str + @param whois whois information + @type str + @param parent reference to the parent widget + @type QWidget + """ + super(VirusTotalWhoisDialog, self).__init__(parent) + self.setupUi(self) + + self.headerLabel.setText( + self.tr("<b>Whois information for domain {0}</b>").format(domain)) + self.headerPixmap.setPixmap( + UI.PixmapCache.getPixmap("virustotal.png")) + self.whoisEdit.setPlainText(whois)
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/VirusTotal/VirusTotalWhoisDialog.ui Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,110 @@ +<?xml version="1.0" encoding="UTF-8"?> +<ui version="4.0"> + <class>VirusTotalWhoisDialog</class> + <widget class="QDialog" name="VirusTotalWhoisDialog"> + <property name="geometry"> + <rect> + <x>0</x> + <y>0</y> + <width>500</width> + <height>400</height> + </rect> + </property> + <property name="windowTitle"> + <string>Whois Information</string> + </property> + <property name="sizeGripEnabled"> + <bool>true</bool> + </property> + <layout class="QVBoxLayout" name="verticalLayout"> + <item> + <layout class="QHBoxLayout" name="horizontalLayout_4"> + <item> + <widget class="QLabel" name="headerPixmap"/> + </item> + <item> + <widget class="QLabel" name="headerLabel"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + </widget> + </item> + </layout> + </item> + <item> + <widget class="Line" name="line9_3"> + <property name="frameShape"> + <enum>QFrame::HLine</enum> + </property> + <property name="frameShadow"> + <enum>QFrame::Sunken</enum> + </property> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + </widget> + </item> + <item> + <widget class="QPlainTextEdit" name="whoisEdit"> + <property name="tabChangesFocus"> + <bool>true</bool> + </property> + <property name="lineWrapMode"> + <enum>QPlainTextEdit::NoWrap</enum> + </property> + <property name="readOnly"> + <bool>true</bool> + </property> + </widget> + </item> + <item> + <widget class="QDialogButtonBox" name="buttonBox"> + <property name="orientation"> + <enum>Qt::Horizontal</enum> + </property> + <property name="standardButtons"> + <set>QDialogButtonBox::Close</set> + </property> + </widget> + </item> + </layout> + </widget> + <resources/> + <connections> + <connection> + <sender>buttonBox</sender> + <signal>accepted()</signal> + <receiver>VirusTotalWhoisDialog</receiver> + <slot>accept()</slot> + <hints> + <hint type="sourcelabel"> + <x>248</x> + <y>254</y> + </hint> + <hint type="destinationlabel"> + <x>157</x> + <y>274</y> + </hint> + </hints> + </connection> + <connection> + <sender>buttonBox</sender> + <signal>rejected()</signal> + <receiver>VirusTotalWhoisDialog</receiver> + <slot>reject()</slot> + <hints> + <hint type="sourcelabel"> + <x>316</x> + <y>260</y> + </hint> + <hint type="destinationlabel"> + <x>286</x> + <y>274</y> + </hint> + </hints> + </connection> + </connections> +</ui>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Helpviewer/VirusTotal/__init__.py Sun Jul 26 11:12:08 2015 +0200 @@ -0,0 +1,8 @@ +# -*- coding: utf-8 -*- + +# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de> +# + +""" +Package containing the VirusTotal interface. +"""
--- a/Helpviewer/VirusTotalApi.py Sat Jul 25 20:00:25 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,410 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2011 - 2015 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing the <a href="http://www.virustotal.com">VirusTotal</a> -API class. -""" - -from __future__ import unicode_literals -try: - str = unicode -except NameError: - pass - -import json - -from PyQt5.QtCore import QObject, QUrl, QByteArray, pyqtSignal, qVersion -from PyQt5.QtNetwork import QNetworkRequest, QNetworkReply - -from E5Gui import E5MessageBox - -import Preferences - - -class VirusTotalAPI(QObject): - """ - Class implementing the <a href="http://www.virustotal.com">VirusTotal</a> - API. - - @signal checkServiceKeyFinished(bool, str) emitted after the service key - check has been performed. It gives a flag indicating validity - (boolean) and an error message in case of a network error (string). - @signal submitUrlError(str) emitted with the error string, if the URL scan - submission returned an error. - @signal urlScanReport(str) emitted with the URL of the URL scan report page - @signal fileScanReport(str) emitted with the URL of the file scan report - page - """ - checkServiceKeyFinished = pyqtSignal(bool, str) - submitUrlError = pyqtSignal(str) - urlScanReport = pyqtSignal(str) - fileScanReport = pyqtSignal(str) - - TestServiceKeyScanID = \ - "4feed2c2e352f105f6188efd1d5a558f24aee6971bdf96d5fdb19c197d6d3fad" - - ServiceResult_ItemQueued = -2 - ServiceResult_ItemNotPresent = 0 - ServiceResult_ItemPresent = 1 - - # HTTP Status Codes - ServiceCode_InvalidKey = 202 - ServiceCode_RateLimitExceeded = 204 - ServiceCode_InvalidPrivilege = 403 - - GetFileReportPattern = "{0}://www.virustotal.com/vtapi/v2/file/report" - ScanUrlPattern = "{0}://www.virustotal.com/vtapi/v2/url/scan" - GetUrlReportPattern = "{0}://www.virustotal.com/vtapi/v2/url/report" - GetIpAddressReportPattern = \ - "{0}://www.virustotal.com/vtapi/v2/ip-address/report" - GetDomainReportPattern = "{0}://www.virustotal.com/vtapi/v2/domain/report" - - def __init__(self, parent=None): - """ - Constructor - - @param parent reference to the parent object (QObject) - """ - super(VirusTotalAPI, self).__init__(parent) - - self.__replies = [] - - self.__loadSettings() - - self.__lastIP = "" - self.__lastDomain = "" - self.__ipReportDlg = None - self.__domainReportDlg = None - - def __loadSettings(self): - """ - Private method to load the settings. - """ - if Preferences.getHelp("VirusTotalSecure"): - protocol = "https" - else: - protocol = "http" - self.GetFileReportUrl = self.GetFileReportPattern.format(protocol) - self.ScanUrlUrl = self.ScanUrlPattern.format(protocol) - self.GetUrlReportUrl = self.GetUrlReportPattern.format(protocol) - self.GetIpAddressReportUrl = self.GetIpAddressReportPattern.format( - protocol) - self.GetDomainReportUrl = self.GetDomainReportPattern.format(protocol) - - self.errorMessages = { - 204: self.tr("Request limit has been reached."), - 0: self.tr("Requested item is not present."), - -2: self.tr("Requested item is still queued."), - } - - def preferencesChanged(self): - """ - Public slot to handle a change of preferences. - """ - self.__loadSettings() - - def checkServiceKeyValidity(self, key, protocol=""): - """ - Public method to check the validity of the given service key. - - @param key service key (string) - @param protocol protocol used to access VirusTotal (string) - """ - if protocol == "": - urlStr = self.GetFileReportUrl - else: - urlStr = self.GetFileReportPattern.format(protocol) - request = QNetworkRequest(QUrl(urlStr)) - request.setHeader(QNetworkRequest.ContentTypeHeader, - "application/x-www-form-urlencoded") - params = QByteArray("apikey={0}&resource={1}".format( - key, self.TestServiceKeyScanID).encode("utf-8")) - - import Helpviewer.HelpWindow - nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() - reply = nam.post(request, params) - reply.finished.connect(self.__checkServiceKeyValidityFinished) - self.__replies.append(reply) - - def __checkServiceKeyValidityFinished(self): - """ - Private slot to determine the result of the service key validity check. - """ - res = False - msg = "" - - reply = self.sender() - if reply.error() == QNetworkReply.NoError: - res = True - elif reply.error() == self.ServiceCode_InvalidKey: - res = False - else: - msg = reply.errorString() - self.__replies.remove(reply) - reply.deleteLater() - - self.checkServiceKeyFinished.emit(res, msg) - - def submitUrl(self, url): - """ - Public method to submit an URL to be scanned. - - @param url url to be scanned (QUrl) - """ - request = QNetworkRequest(QUrl(self.ScanUrlUrl)) - request.setHeader(QNetworkRequest.ContentTypeHeader, - "application/x-www-form-urlencoded") - params = QByteArray("apikey={0}&url=".format( - Preferences.getHelp("VirusTotalServiceKey")).encode("utf-8"))\ - .append(QUrl.toPercentEncoding(url.toString())) - - import Helpviewer.HelpWindow - nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() - reply = nam.post(request, params) - reply.finished.connect(self.__submitUrlFinished) - self.__replies.append(reply) - - def __submitUrlFinished(self): - """ - Private slot to determine the result of the URL scan submission. - """ - reply = self.sender() - if reply.error() == QNetworkReply.NoError: - result = json.loads(str(reply.readAll(), "utf-8")) - if result["response_code"] == self.ServiceResult_ItemPresent: - self.urlScanReport.emit(result["permalink"]) - self.__getUrlScanReportUrl(result["scan_id"]) - else: - if result["response_code"] in self.errorMessages: - msg = self.errorMessages[result["response_code"]] - else: - msg = result["verbose_msg"] - self.submitUrlError.emit(msg) - elif reply.error() == self.ServiceCode_RateLimitExceeded: - self.submitUrlError.emit( - self.errorMessages[result[self.ServiceCode_RateLimitExceeded]]) - else: - self.submitUrlError.emit(reply.errorString()) - self.__replies.remove(reply) - reply.deleteLater() - - def __getUrlScanReportUrl(self, scanId): - """ - Private method to get the report URL for a URL scan. - - @param scanId ID of the scan to get the report URL for (string) - """ - request = QNetworkRequest(QUrl(self.GetUrlReportUrl)) - request.setHeader(QNetworkRequest.ContentTypeHeader, - "application/x-www-form-urlencoded") - params = QByteArray("apikey={0}&resource={1}".format( - Preferences.getHelp("VirusTotalServiceKey"), scanId) - .encode("utf-8")) - - import Helpviewer.HelpWindow - nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() - reply = nam.post(request, params) - reply.finished.connect(self.__getUrlScanReportUrlFinished) - self.__replies.append(reply) - - def __getUrlScanReportUrlFinished(self): - """ - Private slot to determine the result of the URL scan report URL - request. - """ - reply = self.sender() - if reply.error() == QNetworkReply.NoError: - result = json.loads(str(reply.readAll(), "utf-8")) - if "filescan_id" in result and result["filescan_id"] is not None: - self.__getFileScanReportUrl(result["filescan_id"]) - self.__replies.remove(reply) - reply.deleteLater() - - def __getFileScanReportUrl(self, scanId): - """ - Private method to get the report URL for a file scan. - - @param scanId ID of the scan to get the report URL for (string) - """ - request = QNetworkRequest(QUrl(self.GetFileReportUrl)) - request.setHeader(QNetworkRequest.ContentTypeHeader, - "application/x-www-form-urlencoded") - params = QByteArray("apikey={0}&resource={1}".format( - Preferences.getHelp("VirusTotalServiceKey"), scanId) - .encode("utf-8")) - - import Helpviewer.HelpWindow - nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() - reply = nam.post(request, params) - reply.finished.connect(self.__getFileScanReportUrlFinished) - self.__replies.append(reply) - - def __getFileScanReportUrlFinished(self): - """ - Private slot to determine the result of the file scan report URL - request. - """ - reply = self.sender() - if reply.error() == QNetworkReply.NoError: - result = json.loads(str(reply.readAll(), "utf-8")) - self.fileScanReport.emit(result["permalink"]) - self.__replies.remove(reply) - reply.deleteLater() - - def getIpAddressReport(self, ipAddress): - """ - Public method to retrieve a report for an IP address. - - @param ipAddress valid IPv4 address in dotted quad notation - @type str - """ - self.__lastIP = ipAddress - - queryItems = [ - ("apikey", Preferences.getHelp("VirusTotalServiceKey")), - ("ip", ipAddress), - ] - url = QUrl(self.GetIpAddressReportUrl) - if qVersion() >= "5.0.0": - from PyQt5.QtCore import QUrlQuery - query = QUrlQuery() - query.setQueryItems(queryItems) - url.setQuery(query) - else: - url.setQueryItems(queryItems) - request = QNetworkRequest(url) - - import Helpviewer.HelpWindow - nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() - reply = nam.get(request) - reply.finished.connect(self.__getIpAddressReportFinished) - self.__replies.append(reply) - - def __getIpAddressReportFinished(self): - """ - Private slot to process the IP address report data. - """ - reply = self.sender() - if reply.error() == QNetworkReply.NoError: - result = json.loads(str(reply.readAll(), "utf-8")) - if result["response_code"] == 0: - E5MessageBox.information( - None, - self.tr("VirusTotal IP Address Report"), - self.tr("""VirusTotal does not have any information for""" - """ the given IP address.""")) - elif result["response_code"] == -1: - E5MessageBox.information( - None, - self.tr("VirusTotal IP Address Report"), - self.tr("""The submitted IP address is invalid.""")) - else: - owner = result["as_owner"] - resolutions = result["resolutions"] - try: - urls = result["detected_urls"] - except KeyError: - urls = [] - - from .VirusTotalIpReportDialog import VirusTotalIpReportDialog - self.__ipReportDlg = VirusTotalIpReportDialog( - self.__lastIP, owner, resolutions, urls) - self.__ipReportDlg.show() - self.__replies.remove(reply) - reply.deleteLater() - - def getDomainReport(self, domain): - """ - Public method to retrieve a report for a domain. - - @param domain domain name - @type str - """ - self.__lastDomain = domain - - queryItems = [ - ("apikey", Preferences.getHelp("VirusTotalServiceKey")), - ("domain", domain), - ] - url = QUrl(self.GetDomainReportUrl) - if qVersion() >= "5.0.0": - from PyQt5.QtCore import QUrlQuery - query = QUrlQuery() - query.setQueryItems(queryItems) - url.setQuery(query) - else: - url.setQueryItems(queryItems) - request = QNetworkRequest(url) - - import Helpviewer.HelpWindow - nam = Helpviewer.HelpWindow.HelpWindow.networkAccessManager() - reply = nam.get(request) - reply.finished.connect(self.__getDomainReportFinished) - self.__replies.append(reply) - - def __getDomainReportFinished(self): - """ - Private slot to process the IP address report data. - """ - reply = self.sender() - if reply.error() == QNetworkReply.NoError: - result = json.loads(str(reply.readAll(), "utf-8")) - if result["response_code"] == 0: - E5MessageBox.information( - None, - self.tr("VirusTotal Domain Report"), - self.tr("""VirusTotal does not have any information for""" - """ the given domain.""")) - elif result["response_code"] == -1: - E5MessageBox.information( - None, - self.tr("VirusTotal Domain Report"), - self.tr("""The submitted domain address is invalid.""")) - else: - resolutions = result["resolutions"] - try: - urls = result["detected_urls"] - except KeyError: - urls = [] - try: - subdomains = result["subdomains"] - except KeyError: - subdomains = [] - try: - bdCategory = result["BitDefender category"] - except KeyError: - bdCategory = self.tr("not available") - try: - tmCategory = result["TrendMicro category"] - except KeyError: - tmCategory = self.tr("not available") - try: - wtsCategory = result["Websense ThreatSeeker category"] - except KeyError: - wtsCategory = self.tr("not available") - try: - categories = result["categories"] - except KeyError: - categories = [] - - from .VirusTotalDomainReportDialog import \ - VirusTotalDomainReportDialog - self.__domainReportDlg = VirusTotalDomainReportDialog( - self.__lastDomain, resolutions, urls, subdomains, - bdCategory, tmCategory, wtsCategory, categories) - self.__domainReportDlg.show() - self.__replies.remove(reply) - reply.deleteLater() - - def close(self): - """ - Public slot to close the API. - """ - for reply in self.__replies: - reply.abort() - - self.__ipReportDlg and self.__ipReportDlg.close() - self.__domainReportDlg and self.__domainReportDlg.close()
--- a/Helpviewer/VirusTotalDomainReportDialog.py Sat Jul 25 20:00:25 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,90 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing a dialog to show the VirusTotal domain report. -""" - -from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QDialog, QTreeWidgetItem - -from .Ui_VirusTotalDomainReportDialog import Ui_VirusTotalDomainReportDialog - - -class VirusTotalDomainReportDialog(QDialog, Ui_VirusTotalDomainReportDialog): - """ - Class implementing a dialog to show the VirusTotal domain report. - """ - def __init__(self, domain, resolutions, urls, subdomains, - bdCategory, tmCategory, wtsCategory, categories, parent=None): - """ - Constructor - - @param domain domain name - @type str - @param resolutions list of resolved host names - @type list of dict - @param urls list of detected URLs - @type list of dict - @param subdomains list of subdomains - @type list of str - @param bdCategory BitDefender categorization - @type str - @param tmCategory TrendMicro categorization - @type str - @param wtsCategory Websense ThreatSeeker categorization - @type str - @param categories list of categorizations - @type list of str - @param parent reference to the parent widget - @type QWidget - """ - super(VirusTotalDomainReportDialog, self).__init__(parent) - self.setupUi(self) - self.setWindowFlags(Qt.Window) - - self.headerLabel.setText( - self.tr("<b>Report for domain {0}</b>").format(domain)) - - for resolution in resolutions: - QTreeWidgetItem( - self.resolutionsList, - [resolution["ip_address"], - resolution["last_resolved"].split()[0]] - ) - self.resolutionsList.resizeColumnToContents(0) - self.resolutionsList.resizeColumnToContents(1) - self.resolutionsList.sortByColumn(0, Qt.AscendingOrder) - - if not urls: - self.detectedUrlsGroup.setVisible(False) - for url in urls: - QTreeWidgetItem( - self.urlsList, - [url["url"], - self.tr("{0}/{1}", "positives / total").format( - url["positives"], url["total"]), - url["scan_date"].split()[0]] - ) - self.urlsList.resizeColumnToContents(0) - self.urlsList.resizeColumnToContents(1) - self.urlsList.resizeColumnToContents(2) - self.urlsList.sortByColumn(0, Qt.AscendingOrder) - - if not subdomains: - self.subdomainsGroup.setVisible(False) - else: - self.subdomainsList.addItems(subdomains) - self.subdomainsList.sortItems() - - self.bdLabel.setText(bdCategory) - self.tmLabel.setText(tmCategory) - self.wtsLabel.setText(wtsCategory) -## -## if not categories: -## self.categoriesList.setVisible(False) -## else: -## self.categoriesList.addItems(categories) -## self.categoriesList.sortItems()
--- a/Helpviewer/VirusTotalDomainReportDialog.ui Sat Jul 25 20:00:25 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,278 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>VirusTotalDomainReportDialog</class> - <widget class="QDialog" name="VirusTotalDomainReportDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>900</width> - <height>700</height> - </rect> - </property> - <property name="windowTitle"> - <string>Domain Report</string> - </property> - <property name="sizeGripEnabled"> - <bool>true</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout_4"> - <item> - <widget class="QLabel" name="headerLabel"/> - </item> - <item> - <widget class="Line" name="line9_3"> - <property name="frameShape"> - <enum>QFrame::HLine</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Sunken</enum> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <widget class="QGroupBox" name="groupBox"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Categorizations</string> - </property> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <layout class="QGridLayout" name="gridLayout"> - <item row="0" column="0"> - <widget class="QLabel" name="label"> - <property name="text"> - <string notr="true">BitDefender:</string> - </property> - </widget> - </item> - <item row="0" column="1"> - <widget class="QLabel" name="bdLabel"> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="1" column="0"> - <widget class="QLabel" name="label_2"> - <property name="text"> - <string notr="true">TrendMicro:</string> - </property> - </widget> - </item> - <item row="1" column="1"> - <widget class="QLabel" name="tmLabel"> - <property name="text"> - <string/> - </property> - </widget> - </item> - <item row="2" column="0"> - <widget class="QLabel" name="label_3"> - <property name="text"> - <string notr="true">Websense ThreatSeeker:</string> - </property> - </widget> - </item> - <item row="2" column="1"> - <widget class="QLabel" name="wtsLabel"> - <property name="text"> - <string/> - </property> - </widget> - </item> - </layout> - </item> - <item> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>690</width> - <height>20</height> - </size> - </property> - </spacer> - </item> - </layout> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout_2"> - <item> - <widget class="QGroupBox" name="resolutionsGroup"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>4</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Resolutions</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QTreeWidget" name="resolutionsList"> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="rootIsDecorated"> - <bool>false</bool> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <property name="allColumnsShowFocus"> - <bool>true</bool> - </property> - <column> - <property name="text"> - <string>IP-Address</string> - </property> - </column> - <column> - <property name="text"> - <string>Resolved Date</string> - </property> - </column> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="subdomainsGroup"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>4</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Subdomains</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QListWidget" name="subdomainsList"> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - </widget> - </item> - </layout> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QGroupBox" name="detectedUrlsGroup"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>2</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Detected URLs</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QTreeWidget" name="urlsList"> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="rootIsDecorated"> - <bool>false</bool> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <property name="allColumnsShowFocus"> - <bool>true</bool> - </property> - <column> - <property name="text"> - <string>URL</string> - </property> - </column> - <column> - <property name="text"> - <string>Scan Result</string> - </property> - </column> - <column> - <property name="text"> - <string>Scan Date</string> - </property> - </column> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Close</set> - </property> - </widget> - </item> - </layout> - </widget> - <tabstops> - <tabstop>resolutionsList</tabstop> - <tabstop>subdomainsList</tabstop> - <tabstop>urlsList</tabstop> - </tabstops> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>VirusTotalDomainReportDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>VirusTotalDomainReportDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui>
--- a/Helpviewer/VirusTotalIpReportDialog.py Sat Jul 25 20:00:25 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,66 +0,0 @@ -# -*- coding: utf-8 -*- - -# Copyright (c) 2015 Detlev Offenbach <detlev@die-offenbachs.de> -# - -""" -Module implementing a dialog to show the VirusTotal IP address report. -""" - -from PyQt5.QtCore import Qt -from PyQt5.QtWidgets import QDialog, QTreeWidgetItem - -from .Ui_VirusTotalIpReportDialog import Ui_VirusTotalIpReportDialog - - -class VirusTotalIpReportDialog(QDialog, Ui_VirusTotalIpReportDialog): - """ - Class implementing a dialog to show the VirusTotal IP address report. - """ - def __init__(self, ip, owner, resolutions, urls, parent=None): - """ - Constructor - - @param ip IP address - @type str - @param owner owner of the IP address - @type str - @param resolutions list of resolved host names - @type list of dict - @param urls list of detected URLs - @type list of dict - @param parent reference to the parent widget - @type QWidget - """ - super(VirusTotalIpReportDialog, self).__init__(parent) - self.setupUi(self) - self.setWindowFlags(Qt.Window) - - self.headerLabel.setText( - self.tr("<b>Report for IP {0}</b>").format(ip)) - self.ownerLabel.setText(owner) - - for resolution in resolutions: - QTreeWidgetItem( - self.resolutionsList, - [resolution["hostname"], - resolution["last_resolved"].split()[0]] - ) - self.resolutionsList.resizeColumnToContents(0) - self.resolutionsList.resizeColumnToContents(1) - self.resolutionsList.sortByColumn(0, Qt.AscendingOrder) - - if not urls: - self.detectedUrlsGroup.setVisible(False) - for url in urls: - QTreeWidgetItem( - self.urlsList, - [url["url"], - self.tr("{0}/{1}", "positives / total").format( - url["positives"], url["total"]), - url["scan_date"].split()[0]] - ) - self.urlsList.resizeColumnToContents(0) - self.urlsList.resizeColumnToContents(1) - self.urlsList.resizeColumnToContents(2) - self.urlsList.sortByColumn(0, Qt.AscendingOrder)
--- a/Helpviewer/VirusTotalIpReportDialog.ui Sat Jul 25 20:00:25 2015 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,194 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<ui version="4.0"> - <class>VirusTotalIpReportDialog</class> - <widget class="QDialog" name="VirusTotalIpReportDialog"> - <property name="geometry"> - <rect> - <x>0</x> - <y>0</y> - <width>800</width> - <height>600</height> - </rect> - </property> - <property name="windowTitle"> - <string>IP Address Report</string> - </property> - <property name="sizeGripEnabled"> - <bool>true</bool> - </property> - <layout class="QVBoxLayout" name="verticalLayout"> - <item> - <widget class="QLabel" name="headerLabel"/> - </item> - <item> - <widget class="Line" name="line9_3"> - <property name="frameShape"> - <enum>QFrame::HLine</enum> - </property> - <property name="frameShadow"> - <enum>QFrame::Sunken</enum> - </property> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - </widget> - </item> - <item> - <layout class="QHBoxLayout" name="horizontalLayout"> - <item> - <widget class="QLabel" name="label"> - <property name="text"> - <string>Owner:</string> - </property> - </widget> - </item> - <item> - <widget class="QLabel" name="ownerLabel"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>0</verstretch> - </sizepolicy> - </property> - <property name="text"> - <string/> - </property> - </widget> - </item> - </layout> - </item> - <item> - <widget class="QGroupBox" name="resolutionsGroup"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>4</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Resolutions</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_2"> - <item> - <widget class="QTreeWidget" name="resolutionsList"> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="rootIsDecorated"> - <bool>false</bool> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <property name="allColumnsShowFocus"> - <bool>true</bool> - </property> - <column> - <property name="text"> - <string>Hostname</string> - </property> - </column> - <column> - <property name="text"> - <string>Resolved Date</string> - </property> - </column> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QGroupBox" name="detectedUrlsGroup"> - <property name="sizePolicy"> - <sizepolicy hsizetype="Preferred" vsizetype="Preferred"> - <horstretch>0</horstretch> - <verstretch>2</verstretch> - </sizepolicy> - </property> - <property name="title"> - <string>Detected URLs</string> - </property> - <layout class="QVBoxLayout" name="verticalLayout_3"> - <item> - <widget class="QTreeWidget" name="urlsList"> - <property name="alternatingRowColors"> - <bool>true</bool> - </property> - <property name="rootIsDecorated"> - <bool>false</bool> - </property> - <property name="sortingEnabled"> - <bool>true</bool> - </property> - <property name="allColumnsShowFocus"> - <bool>true</bool> - </property> - <column> - <property name="text"> - <string>URL</string> - </property> - </column> - <column> - <property name="text"> - <string>Scan Result</string> - </property> - </column> - <column> - <property name="text"> - <string>Scan Date</string> - </property> - </column> - </widget> - </item> - </layout> - </widget> - </item> - <item> - <widget class="QDialogButtonBox" name="buttonBox"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="standardButtons"> - <set>QDialogButtonBox::Close</set> - </property> - </widget> - </item> - </layout> - </widget> - <resources/> - <connections> - <connection> - <sender>buttonBox</sender> - <signal>accepted()</signal> - <receiver>VirusTotalIpReportDialog</receiver> - <slot>accept()</slot> - <hints> - <hint type="sourcelabel"> - <x>248</x> - <y>254</y> - </hint> - <hint type="destinationlabel"> - <x>157</x> - <y>274</y> - </hint> - </hints> - </connection> - <connection> - <sender>buttonBox</sender> - <signal>rejected()</signal> - <receiver>VirusTotalIpReportDialog</receiver> - <slot>reject()</slot> - <hints> - <hint type="sourcelabel"> - <x>316</x> - <y>260</y> - </hint> - <hint type="destinationlabel"> - <x>286</x> - <y>274</y> - </hint> - </hints> - </connection> - </connections> -</ui>
--- a/Preferences/ConfigurationPages/HelpVirusTotalPage.py Sat Jul 25 20:00:25 2015 +0200 +++ b/Preferences/ConfigurationPages/HelpVirusTotalPage.py Sun Jul 26 11:12:08 2015 +0200 @@ -33,7 +33,7 @@ self.testResultLabel.setHidden(True) - from Helpviewer.VirusTotalApi import VirusTotalAPI + from Helpviewer.VirusTotal.VirusTotalApi import VirusTotalAPI self.__vt = VirusTotalAPI(self) self.__vt.checkServiceKeyFinished.connect( self.__checkServiceKeyFinished)
--- a/changelog Sat Jul 25 20:00:25 2015 +0200 +++ b/changelog Sun Jul 26 11:12:08 2015 +0200 @@ -57,6 +57,7 @@ -- added support for feature permissions -- improved parsing of the content disposition header analog to the way it is done in qutebrowser + -- modified and extended the VirusTotal interface for the v2 API - Third Party packages -- updated Pygments to 2.0.2
--- a/eric6.e4p Sat Jul 25 20:00:25 2015 +0200 +++ b/eric6.e4p Sun Jul 26 11:12:08 2015 +0200 @@ -425,9 +425,11 @@ <Source>Helpviewer/UserAgent/UserAgentWriter.py</Source> <Source>Helpviewer/UserAgent/UserAgentsDialog.py</Source> <Source>Helpviewer/UserAgent/__init__.py</Source> - <Source>Helpviewer/VirusTotalApi.py</Source> - <Source>Helpviewer/VirusTotalDomainReportDialog.py</Source> - <Source>Helpviewer/VirusTotalIpReportDialog.py</Source> + <Source>Helpviewer/VirusTotal/VirusTotalApi.py</Source> + <Source>Helpviewer/VirusTotal/VirusTotalDomainReportDialog.py</Source> + <Source>Helpviewer/VirusTotal/VirusTotalIpReportDialog.py</Source> + <Source>Helpviewer/VirusTotal/VirusTotalWhoisDialog.py</Source> + <Source>Helpviewer/VirusTotal/__init__.py</Source> <Source>Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.py</Source> <Source>Helpviewer/WebPlugins/ClickToFlash/ClickToFlashPlugin.py</Source> <Source>Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.py</Source> @@ -1324,8 +1326,9 @@ <Form>Helpviewer/UrlBar/BookmarkActionSelectionDialog.ui</Form> <Form>Helpviewer/UrlBar/BookmarkInfoDialog.ui</Form> <Form>Helpviewer/UserAgent/UserAgentsDialog.ui</Form> - <Form>Helpviewer/VirusTotalDomainReportDialog.ui</Form> - <Form>Helpviewer/VirusTotalIpReportDialog.ui</Form> + <Form>Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui</Form> + <Form>Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui</Form> + <Form>Helpviewer/VirusTotal/VirusTotalWhoisDialog.ui</Form> <Form>Helpviewer/WebPlugins/ClickToFlash/ClickToFlash.ui</Form> <Form>Helpviewer/WebPlugins/ClickToFlash/ClickToFlashWhitelistDialog.ui</Form> <Form>IconEditor/IconSizeDialog.ui</Form>
--- a/i18n/eric6_cs.ts Sat Jul 25 20:00:25 2015 +0200 +++ b/i18n/eric6_cs.ts Sun Jul 26 11:12:08 2015 +0200 @@ -289,47 +289,47 @@ <context> <name>AdBlockSubscription</name> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="315"/> <source>Load subscription rules</source> <translation>Nahrát odebíraná pravidla</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="487"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="488"/> <source>Downloading subscription rules</source> <translation>Stažení odebíraných pravidel</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="425"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="426"/> <source>Got empty subscription rules.</source> <translation>Odebíraná pravidla jsou prázdná.</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="510"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="511"/> <source>Saving subscription rules</source> <translation>Ukládání odebíraných pravidel</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="305"/> <source>Unable to open adblock file '{0}' for reading.</source> <translation>Nelze otevřít adblock soubor '{0}' pro čtení.</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="412"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="413"/> <source><p>Subscription rules could not be downloaded.</p><p>Error: {0}</p></source> <translation><p>Pravidla pro předplatné nelze stáhnout.</p><p>Chyba: {0}</p></translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="510"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="511"/> <source>Unable to open adblock file '{0}' for writing.</source> <translation>Nelze otevřít adblock soubor '{0}' pro zápis.</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="315"/> <source>AdBlock file '{0}' does not start with [Adblock.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="487"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="488"/> <source><p>AdBlock subscription <b>{0}</b> has a wrong checksum.<br/>Found: {1}<br/>Calculated: {2}<br/>Use it anyway?</p></source> <translation type="unfinished"></translation> </message> @@ -4267,22 +4267,22 @@ <translation>neznámý</translation> </message> <message> - <location filename="../Cooperation/Connection.py" line="217"/> + <location filename="../Cooperation/Connection.py" line="218"/> <source>New Connection</source> <translation>Nové spojení</translation> </message> <message> - <location filename="../Cooperation/Connection.py" line="217"/> + <location filename="../Cooperation/Connection.py" line="218"/> <source><p>Accept connection from <strong>{0}@{1}</strong>?</p></source> <translation><p>Přijmout připojení z <strong>{0}@{1}</strong>?</p></translation> </message> <message> - <location filename="../Cooperation/Connection.py" line="454"/> + <location filename="../Cooperation/Connection.py" line="457"/> <source>* Connection to {0}:{1} refused.</source> <translation>* Připojení z {0}:{1} odmítnuto.</translation> </message> <message> - <location filename="../Cooperation/Connection.py" line="207"/> + <location filename="../Cooperation/Connection.py" line="208"/> <source>* Connection attempted by banned user '{0}'.</source> <translation>* Pokus o připojení od zakázaného uživatele '{0}'.</translation> </message> @@ -4808,12 +4808,12 @@ <translation>&Filtr pro:</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="525"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="526"/> <source>Code Generation</source> <translation>Generování kódu</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="340"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="341"/> <source>uic error</source> <translation>uic chyba</translation> </message> @@ -4828,22 +4828,22 @@ <translation>Soubor <b>{0}</b> existuje ale neobsahuje žádné třídy.</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="340"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="341"/> <source><p>There was an error loading the form <b>{0}</b>.</p><p>{1}</p></source> <translation><p>Byla nalezena chyba načtená z <b>{0}</b>.</p><p>{1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="410"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="411"/> <source><p>Could not open the code template file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Template soubor <b>{0}</b> nelze otevřít.</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="446"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="447"/> <source><p>Could not open the source file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Nelze ovevřít source soubor "{0}".</p><p>Důvod: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="525"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="526"/> <source><p>Could not write the source file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Nelze zapsat do source souboru "{0}".</p><p>Důvod: {1}</p></translation> </message> @@ -7025,47 +7025,47 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="238"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="239"/> <source>Download canceled: {0}</source> <translation type="unfinished">Download zrušen: {0}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="228"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="229"/> <source>Save File</source> <translation type="unfinished">Uložit soubor</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="258"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="259"/> <source>Download directory ({0}) couldn't be created.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="436"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="421"/> <source>Error opening save file: {0}</source> <translation type="unfinished">Chyba při otvírání uloženého souboru: {0}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="449"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="434"/> <source>Error saving: {0}</source> <translation type="unfinished">Chyba při ukládání: {0}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="462"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="447"/> <source>Network Error: {0}</source> <translation type="unfinished">Chyba sítě: {0}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="577"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="562"/> <source>?</source> <translation type="unfinished">?</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="593"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="578"/> <source>{0} of {1} - Stopped</source> <translation type="unfinished">{0} z {1} - zastaveno</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="208"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="209"/> <source>VirusTotal scan scheduled: {0}</source> <translation type="unfinished"></translation> </message> @@ -7075,13 +7075,13 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="576"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="561"/> <source>{0} of {1} ({2}/sec) {3}</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="585"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="570"/> <source>{0} downloaded SHA1: {1} MD5: {2}</source> @@ -14185,27 +14185,27 @@ <context> <name>FeaturePermissionBar</name> <message> - <location filename="../Helpviewer/FeaturePermissionBar.py" line="44"/> + <location filename="../Helpviewer/FeaturePermissionBar.py" line="45"/> <source>{0} wants to use desktop notifications.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissionBar.py" line="46"/> + <location filename="../Helpviewer/FeaturePermissionBar.py" line="47"/> <source>{0} wants to use your position.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissionBar.py" line="55"/> - <source>Allow</source> - <translation type="unfinished">Povolit</translation> - </message> - <message> <location filename="../Helpviewer/FeaturePermissionBar.py" line="56"/> + <source>Allow</source> + <translation type="unfinished">Povolit</translation> + </message> + <message> + <location filename="../Helpviewer/FeaturePermissionBar.py" line="57"/> <source>Deny</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissionBar.py" line="85"/> + <location filename="../Helpviewer/FeaturePermissionBar.py" line="86"/> <source>{0} wants to use an unknown feature.</source> <translation type="unfinished"></translation> </message> @@ -17497,1707 +17497,1722 @@ <context> <name>HelpWindow</name> <message> - <location filename="../Helpviewer/HelpWindow.py" line="637"/> + <location filename="../Helpviewer/HelpWindow.py" line="642"/> <source>Close the current help window</source> <translation>Zavřít aktuální okno nápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="447"/> + <location filename="../Helpviewer/HelpWindow.py" line="452"/> <source>Open a new help window tab</source> <translation>Otevřít nový tab nápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="441"/> + <location filename="../Helpviewer/HelpWindow.py" line="446"/> <source>&New Tab</source> <translation>&Nový tab</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="441"/> + <location filename="../Helpviewer/HelpWindow.py" line="446"/> <source>Ctrl+T</source> <comment>File|New Tab</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="448"/> + <location filename="../Helpviewer/HelpWindow.py" line="453"/> <source><b>New Tab</b><p>This opens a new help window tab.</p></source> <translation><b>Nový tab</b><p>Otevře nový tab v okně nápovědy.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="456"/> + <location filename="../Helpviewer/HelpWindow.py" line="461"/> <source>Ctrl+N</source> <comment>File|New Window</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="462"/> + <location filename="../Helpviewer/HelpWindow.py" line="467"/> <source>Open a new help browser window</source> <translation>Otevřít nové okno nápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="463"/> + <location filename="../Helpviewer/HelpWindow.py" line="468"/> <source><b>New Window</b><p>This opens a new help browser window.</p></source> <translation><b>Nové okno</b><p>Otevře nové okno nápovědy.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="471"/> + <location filename="../Helpviewer/HelpWindow.py" line="476"/> <source>&Open File</source> <translation>&Otevřít soubor</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="471"/> + <location filename="../Helpviewer/HelpWindow.py" line="476"/> <source>Ctrl+O</source> <comment>File|Open</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="477"/> + <location filename="../Helpviewer/HelpWindow.py" line="482"/> <source>Open a help file for display</source> <translation>Otevřít soubor s nápovědou</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="478"/> + <location filename="../Helpviewer/HelpWindow.py" line="483"/> <source><b>Open File</b><p>This opens a new help file for display. It pops up a file selection dialog.</p></source> <translation><b>Otevřít soubor</b><p>Zobrazí nové okno s nápovědou. Otevře dialog pro výběr souboru.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="487"/> + <location filename="../Helpviewer/HelpWindow.py" line="492"/> <source>Open File in New &Tab</source> <translation>Otevřít soubor do nového &tabu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="487"/> + <location filename="../Helpviewer/HelpWindow.py" line="492"/> <source>Shift+Ctrl+O</source> <comment>File|Open in new tab</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="493"/> + <location filename="../Helpviewer/HelpWindow.py" line="498"/> <source>Open a help file for display in a new tab</source> <translation>Otevřít nápovědu do nového tabu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="495"/> + <location filename="../Helpviewer/HelpWindow.py" line="500"/> <source><b>Open File in New Tab</b><p>This opens a new help file for display in a new tab. It pops up a file selection dialog.</p></source> <translation><b>Otevřít soubor do nového tabu</b><p>Zobrazí se nápověda a zobrazí se v novém tabu. Otevře dialog pro výběr souboru.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="584"/> + <location filename="../Helpviewer/HelpWindow.py" line="589"/> <source>&Print</source> <translation>&Tisk</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="584"/> + <location filename="../Helpviewer/HelpWindow.py" line="589"/> <source>Ctrl+P</source> <comment>File|Print</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="590"/> + <location filename="../Helpviewer/HelpWindow.py" line="595"/> <source>Print the displayed help</source> <translation>Tisknout zobrazenou nápovědu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="591"/> + <location filename="../Helpviewer/HelpWindow.py" line="596"/> <source><b>Print</b><p>Print the displayed help text.</p></source> <translation><b>Tisk</b><p>Tisknout zobrazenou nápovědu.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="631"/> + <location filename="../Helpviewer/HelpWindow.py" line="636"/> <source>&Close</source> <translation>&Zavřít</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="631"/> + <location filename="../Helpviewer/HelpWindow.py" line="636"/> <source>Ctrl+W</source> <comment>File|Close</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="639"/> + <location filename="../Helpviewer/HelpWindow.py" line="644"/> <source><b>Close</b><p>Closes the current help window.</p></source> <translation><b>Zavřít</b><p>Zavře aktuální okno s nápovědou.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="647"/> - <source>Close &All</source> - <translation>Z&avřít vše</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="652"/> + <source>Close &All</source> + <translation>Z&avřít vše</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="657"/> <source><b>Close All</b><p>Closes all help windows except the first one.</p></source> <translation><b>Zavřít vše</b><p>Zavřít všechna okna s nápovědou kromě prvního.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="678"/> + <location filename="../Helpviewer/HelpWindow.py" line="683"/> <source>&Quit</source> <translation>&Konec</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="678"/> + <location filename="../Helpviewer/HelpWindow.py" line="683"/> <source>Ctrl+Q</source> <comment>File|Quit</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="696"/> + <location filename="../Helpviewer/HelpWindow.py" line="701"/> <source>&Backward</source> <translation>&Nazpět</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="703"/> + <location filename="../Helpviewer/HelpWindow.py" line="708"/> <source>Move one help screen backward</source> <translation>Posun o jednu obrazovku nápovědy nazpět</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="704"/> + <location filename="../Helpviewer/HelpWindow.py" line="709"/> <source><b>Backward</b><p>Moves one help screen backward. If none is available, this action is disabled.</p></source> <translation><b>Nazpět</b><p>Posun o jednu obrazovku nazpět. Pokud není taková k dispozici, je tato akce vypnuta.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="713"/> + <location filename="../Helpviewer/HelpWindow.py" line="718"/> <source>&Forward</source> <translation>&Dopředu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="720"/> + <location filename="../Helpviewer/HelpWindow.py" line="725"/> <source>Move one help screen forward</source> <translation>Posun o jednu obrazovku dopředu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="722"/> + <location filename="../Helpviewer/HelpWindow.py" line="727"/> <source><b>Forward</b><p>Moves one help screen forward. If none is available, this action is disabled.</p></source> <translation><b>Dopředu</b><p>Posun o jednu obrazovku dopředu. Pokud není taková k dispozici, je tato akce vypnuta.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="731"/> + <location filename="../Helpviewer/HelpWindow.py" line="736"/> <source>&Home</source> <translation>&Hlavní strana</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="737"/> + <location filename="../Helpviewer/HelpWindow.py" line="742"/> <source>Move to the initial help screen</source> <translation>Posun na hlavní stranu nápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="739"/> + <location filename="../Helpviewer/HelpWindow.py" line="744"/> <source><b>Home</b><p>Moves to the initial help screen.</p></source> <translation><b>Hlavní strana</b><p>Posun na hlavní stranu nápovědy.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="747"/> + <location filename="../Helpviewer/HelpWindow.py" line="752"/> <source>&Reload</source> <translation>&Obnovit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="754"/> + <location filename="../Helpviewer/HelpWindow.py" line="759"/> <source>Reload the current help screen</source> <translation>Obsah aktuální nápovědy se obnoví</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="756"/> + <location filename="../Helpviewer/HelpWindow.py" line="761"/> <source><b>Reload</b><p>Reloads the current help screen.</p></source> <translation><b>Obnovit</b><p>Znovu načte aktuální obrazovku nápovědy.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="795"/> + <location filename="../Helpviewer/HelpWindow.py" line="800"/> <source>&Find...</source> <translation>&Hledat...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="801"/> + <location filename="../Helpviewer/HelpWindow.py" line="806"/> <source>Find text in page</source> <translation>Hledat text na stránce</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="802"/> + <location filename="../Helpviewer/HelpWindow.py" line="807"/> <source><b>Find</b><p>Find text in the current page.</p></source> <translation><b>Hledat</b><p>Hledá se text na aktuální straně.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="810"/> + <location filename="../Helpviewer/HelpWindow.py" line="815"/> <source>Find &next</source> <translation>Hledat &následující</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="826"/> + <location filename="../Helpviewer/HelpWindow.py" line="831"/> <source>Find &previous</source> <translation>Hledat &předchozí</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="906"/> + <location filename="../Helpviewer/HelpWindow.py" line="911"/> <source>&What's This?</source> <translation>&Co je to?</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="912"/> + <location filename="../Helpviewer/HelpWindow.py" line="917"/> <source>Context sensitive help</source> <translation>Kontextově senzitivní nápověda</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="913"/> + <location filename="../Helpviewer/HelpWindow.py" line="918"/> <source><b>Display context sensitive help</b><p>In What's This? mode, the mouse cursor shows an arrow with a question mark, and you can click on the interface elements to get a short description of what they do and how to use them. In dialogs, this feature can be accessed using the context help button in the titlebar.</p></source> <translation><b>Zobrazit kontextově senzitivní nápovědu</b><p>V režimu "Co je to?" se nad různými prvky aplikace u kurzoru zobrazí otazník. Když pak kliknete na tyto prvky, zobrazí se krátký popis co daný prvek znamená a jak jej použít. V dialogových oknech se tato funkce spustí tlačítkem kontextové nápovědy na horní liště.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="925"/> + <location filename="../Helpviewer/HelpWindow.py" line="930"/> <source>&About</source> <translation>O &aplikaci</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="929"/> + <location filename="../Helpviewer/HelpWindow.py" line="934"/> <source>Display information about this software</source> <translation>Zobrazit informace a tomto software</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="931"/> + <location filename="../Helpviewer/HelpWindow.py" line="936"/> <source><b>About</b><p>Display some information about this software.</p></source> <translation><b>O aplikaci</b><p>Zobrazí se informace o tomto software.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="939"/> + <location filename="../Helpviewer/HelpWindow.py" line="944"/> <source>About &Qt</source> <translation>O &Qt</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="943"/> + <location filename="../Helpviewer/HelpWindow.py" line="948"/> <source>Display information about the Qt toolkit</source> <translation>Zobrazit informace o Qt toolkitu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="945"/> + <location filename="../Helpviewer/HelpWindow.py" line="950"/> <source><b>About Qt</b><p>Display some information about the Qt toolkit.</p></source> <translation><b>A Qt</b><p>Zobrazit informace o Qt toolkitu.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="953"/> + <location filename="../Helpviewer/HelpWindow.py" line="958"/> <source>Zoom &in</source> <translation>Př&iblížit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="960"/> + <location filename="../Helpviewer/HelpWindow.py" line="965"/> <source>Zoom in on the text</source> <translation>Zvětšovací lupa</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="961"/> + <location filename="../Helpviewer/HelpWindow.py" line="966"/> <source><b>Zoom in</b><p>Zoom in on the text. This makes the text bigger.</p></source> <translation><b>Přiblížit</b><p>Přiblížit text. Text bude větší.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="969"/> + <location filename="../Helpviewer/HelpWindow.py" line="974"/> <source>Zoom &out</source> <translation>&Oddálit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="976"/> + <location filename="../Helpviewer/HelpWindow.py" line="981"/> <source>Zoom out on the text</source> <translation>Zmenšovací lupa</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="977"/> + <location filename="../Helpviewer/HelpWindow.py" line="982"/> <source><b>Zoom out</b><p>Zoom out on the text. This makes the text smaller.</p></source> <translation><b>Oddálit</b><p>Lupa na oddálení textu. Text bude menší.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="780"/> + <location filename="../Helpviewer/HelpWindow.py" line="785"/> <source>&Copy</source> <translation>&Kopírovat</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="780"/> + <location filename="../Helpviewer/HelpWindow.py" line="785"/> <source>Ctrl+C</source> <comment>Edit|Copy</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="786"/> + <location filename="../Helpviewer/HelpWindow.py" line="791"/> <source>Copy the selected text</source> <translation>Kopírovat vybraný text</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="787"/> + <location filename="../Helpviewer/HelpWindow.py" line="792"/> <source><b>Copy</b><p>Copy the selected text to the clipboard.</p></source> <translation><b>Kopírovat</b><p>Kopírovat vybraný text do schránky.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1538"/> + <location filename="../Helpviewer/HelpWindow.py" line="1543"/> <source>&File</source> <translation>S&oubor</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1560"/> + <location filename="../Helpviewer/HelpWindow.py" line="1565"/> <source>&Edit</source> <translation>&Edit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1568"/> + <location filename="../Helpviewer/HelpWindow.py" line="1573"/> <source>&View</source> <translation>Poh&led</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1585"/> + <location filename="../Helpviewer/HelpWindow.py" line="1590"/> <source>&Go</source> <translation>&Jít</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1600"/> + <location filename="../Helpviewer/HelpWindow.py" line="1605"/> <source>H&istory</source> <translation>H&istorie</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1608"/> + <location filename="../Helpviewer/HelpWindow.py" line="1613"/> <source>&Bookmarks</source> <translation>&Záložky</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1681"/> + <location filename="../Helpviewer/HelpWindow.py" line="1686"/> <source>&Help</source> <translation>&Nápověda</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="631"/> + <location filename="../Helpviewer/HelpWindow.py" line="636"/> <source>Close</source> <translation>Zavřít</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="584"/> + <location filename="../Helpviewer/HelpWindow.py" line="589"/> <source>Print</source> <translation>Tisk</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1692"/> + <location filename="../Helpviewer/HelpWindow.py" line="1697"/> <source>File</source> <translation>Soubor</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1717"/> - <source>Edit</source> - <translation>Editovat</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1722"/> + <source>Edit</source> + <translation>Editovat</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1727"/> <source>View</source> <translation>Pohled</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1731"/> + <location filename="../Helpviewer/HelpWindow.py" line="1736"/> <source>Find</source> <translation>Hledat</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1769"/> + <location filename="../Helpviewer/HelpWindow.py" line="1774"/> <source>Help</source> <translation>Nápověda</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1776"/> + <location filename="../Helpviewer/HelpWindow.py" line="1781"/> <source>Go</source> <translation>Jít</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2026"/> + <location filename="../Helpviewer/HelpWindow.py" line="1984"/> <source>Open File</source> <translation>Otevřít soubor</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2026"/> + <location filename="../Helpviewer/HelpWindow.py" line="1984"/> <source>Help Files (*.html *.htm);;PDF Files (*.pdf);;CHM Files (*.chm);;All Files (*)</source> <translation>Help soubory (*.html *.htm);;PDF soubory (*.pdf);;CHM soubory (*.chm);;Všechny soubory (*)</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="441"/> + <location filename="../Helpviewer/HelpWindow.py" line="446"/> <source>New Tab</source> <translation>Nový Tab</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="456"/> + <location filename="../Helpviewer/HelpWindow.py" line="461"/> <source>New Window</source> <translation>Nové okno</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="487"/> + <location filename="../Helpviewer/HelpWindow.py" line="492"/> <source>Open File in New Tab</source> <translation>Otevřít soubor v novém tabu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="647"/> + <location filename="../Helpviewer/HelpWindow.py" line="652"/> <source>Close All</source> <translation>Zavřít vše</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="678"/> + <location filename="../Helpviewer/HelpWindow.py" line="683"/> <source>Quit</source> <translation>Konec</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="696"/> + <location filename="../Helpviewer/HelpWindow.py" line="701"/> <source>Backward</source> <translation>Nazpět</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="696"/> + <location filename="../Helpviewer/HelpWindow.py" line="701"/> <source>Alt+Left</source> <comment>Go|Backward</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="696"/> + <location filename="../Helpviewer/HelpWindow.py" line="701"/> <source>Backspace</source> <comment>Go|Backward</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="713"/> + <location filename="../Helpviewer/HelpWindow.py" line="718"/> <source>Forward</source> <translation>Dopředu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="713"/> + <location filename="../Helpviewer/HelpWindow.py" line="718"/> <source>Alt+Right</source> <comment>Go|Forward</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="713"/> + <location filename="../Helpviewer/HelpWindow.py" line="718"/> <source>Shift+Backspace</source> <comment>Go|Forward</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="731"/> + <location filename="../Helpviewer/HelpWindow.py" line="736"/> <source>Home</source> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="731"/> + <location filename="../Helpviewer/HelpWindow.py" line="736"/> <source>Ctrl+Home</source> <comment>Go|Home</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="747"/> + <location filename="../Helpviewer/HelpWindow.py" line="752"/> <source>Reload</source> <translation>Obnovit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="747"/> + <location filename="../Helpviewer/HelpWindow.py" line="752"/> <source>Ctrl+R</source> <comment>Go|Reload</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="780"/> + <location filename="../Helpviewer/HelpWindow.py" line="785"/> <source>Copy</source> <translation>Kopírovat</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="795"/> + <location filename="../Helpviewer/HelpWindow.py" line="800"/> <source>Find...</source> <translation>Hledat...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="795"/> + <location filename="../Helpviewer/HelpWindow.py" line="800"/> <source>Ctrl+F</source> <comment>Edit|Find</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="810"/> + <location filename="../Helpviewer/HelpWindow.py" line="815"/> <source>Find next</source> <translation>Najít další</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="810"/> + <location filename="../Helpviewer/HelpWindow.py" line="815"/> <source>F3</source> <comment>Edit|Find next</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="826"/> + <location filename="../Helpviewer/HelpWindow.py" line="831"/> <source>Find previous</source> <translation>Najít předchozí</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="826"/> + <location filename="../Helpviewer/HelpWindow.py" line="831"/> <source>Shift+F3</source> <comment>Edit|Find previous</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="859"/> + <location filename="../Helpviewer/HelpWindow.py" line="864"/> <source>Add Bookmark</source> <translation>Přidat záložku</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="906"/> + <location filename="../Helpviewer/HelpWindow.py" line="911"/> <source>What's This?</source> <translation>Co je to?</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="906"/> + <location filename="../Helpviewer/HelpWindow.py" line="911"/> <source>Shift+F1</source> <comment>Help|What's This?'</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="925"/> + <location filename="../Helpviewer/HelpWindow.py" line="930"/> <source>About</source> <translation>O aplikaci</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="939"/> + <location filename="../Helpviewer/HelpWindow.py" line="944"/> <source>About Qt</source> <translation>O Qt</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="953"/> + <location filename="../Helpviewer/HelpWindow.py" line="958"/> <source>Zoom in</source> <translation>Přiblížit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="953"/> + <location filename="../Helpviewer/HelpWindow.py" line="958"/> <source>Ctrl++</source> <comment>View|Zoom in</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="969"/> + <location filename="../Helpviewer/HelpWindow.py" line="974"/> <source>Zoom out</source> <translation>Oddálit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="969"/> + <location filename="../Helpviewer/HelpWindow.py" line="974"/> <source>Ctrl+-</source> <comment>View|Zoom out</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="816"/> + <location filename="../Helpviewer/HelpWindow.py" line="821"/> <source>Find next occurrence of text in page</source> <translation>Hledat následující výskyt textu na straně</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="818"/> + <location filename="../Helpviewer/HelpWindow.py" line="823"/> <source><b>Find next</b><p>Find the next occurrence of text in the current page.</p></source> <translation><b>Hledat následující</b><p>Vyhledá se následující výskyt textu na aktuální straně.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="832"/> + <location filename="../Helpviewer/HelpWindow.py" line="837"/> <source>Find previous occurrence of text in page</source> <translation>Hledat předchozí výskyt textu na stránce</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="834"/> + <location filename="../Helpviewer/HelpWindow.py" line="839"/> <source><b>Find previous</b><p>Find the previous occurrence of text in the current page.</p></source> <translation><b>Hledat předchozí</b><p>Vyhledá předchozí výskyt textu na aktuální straně.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="615"/> - <source>Print Preview</source> - <translation>Náhled tisku</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="620"/> + <source>Print Preview</source> + <translation>Náhled tisku</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="625"/> <source>Print preview of the displayed help</source> <translation>Tisknout náhled zobrazené nápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="622"/> + <location filename="../Helpviewer/HelpWindow.py" line="627"/> <source><b>Print Preview</b><p>Print preview of the displayed help text.</p></source> <translation><b>Vytisknout náhled</b><p>Tisknout náhled zobrazeného textu nápovědy.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1048"/> + <location filename="../Helpviewer/HelpWindow.py" line="1053"/> <source>Show next tab</source> <translation>Zobrazit následující tab</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1048"/> + <location filename="../Helpviewer/HelpWindow.py" line="1053"/> <source>Ctrl+Alt+Tab</source> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1058"/> + <location filename="../Helpviewer/HelpWindow.py" line="1063"/> <source>Show previous tab</source> <translation>Zobrazit předchozí tab</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1058"/> + <location filename="../Helpviewer/HelpWindow.py" line="1063"/> <source>Shift+Ctrl+Alt+Tab</source> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1068"/> + <location filename="../Helpviewer/HelpWindow.py" line="1073"/> <source>Switch between tabs</source> <translation>Přepnout mezi taby</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1068"/> + <location filename="../Helpviewer/HelpWindow.py" line="1073"/> <source>Ctrl+1</source> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1317"/> - <source>Clear icons database</source> - <translation>Vyčistit ikony databáze</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1322"/> + <source>Clear icons database</source> + <translation>Vyčistit ikony databáze</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1327"/> <source>Clear the database of favicons</source> <translation>Vyčistit databázi favicons</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1324"/> + <location filename="../Helpviewer/HelpWindow.py" line="1329"/> <source><b>Clear icons database</b><p>Clears the database of favicons of previously visited URLs.</p></source> <translation><b>Vyčistit databázi favicons</b><p>Vyčistit databázi favicons navštívených URL.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1078"/> + <location filename="../Helpviewer/HelpWindow.py" line="1083"/> <source>Preferences</source> <translation>Předvolby</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1078"/> + <location filename="../Helpviewer/HelpWindow.py" line="1083"/> <source>&Preferences...</source> <translation>&Předvolby...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1082"/> + <location filename="../Helpviewer/HelpWindow.py" line="1087"/> <source>Set the prefered configuration</source> <translation>Nastavit preferovanou konfiguraci</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1084"/> + <location filename="../Helpviewer/HelpWindow.py" line="1089"/> <source><b>Preferences</b><p>Set the configuration items of the application with your prefered values.</p></source> <translation><b>Předvolby</b><p>Upravit položky konfigurace aplikace podle vašich předvoleb.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="182"/> + <location filename="../Helpviewer/HelpWindow.py" line="187"/> <source>Contents</source> <translation>Obsah</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="651"/> + <location filename="../Helpviewer/HelpWindow.py" line="656"/> <source>Close all help windows</source> <translation>Zavřít všechna okna s nápovědou</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1195"/> - <source>Sync with Table of Contents</source> - <translation>Sync obsahu</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1200"/> + <source>Sync with Table of Contents</source> + <translation>Sync obsahu</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1205"/> <source>Synchronizes the table of contents with current page</source> <translation>Synchronizuje obsah s aktuální stranou</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1202"/> + <location filename="../Helpviewer/HelpWindow.py" line="1207"/> <source><b>Sync with Table of Contents</b><p>Synchronizes the table of contents with current page.</p></source> <translation><b>Sync obsah</b><p>Synchronizuje obsah s aktuální stranou.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1211"/> + <location filename="../Helpviewer/HelpWindow.py" line="1216"/> <source>Table of Contents</source> <translation>Obsah</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1215"/> + <location filename="../Helpviewer/HelpWindow.py" line="1220"/> <source>Shows the table of contents window</source> <translation>Zobrazit okno s obsahem</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1217"/> + <location filename="../Helpviewer/HelpWindow.py" line="1222"/> <source><b>Table of Contents</b><p>Shows the table of contents window.</p></source> <translation><b>Obsah</b><p>Zobrazit okno s obsahem.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1254"/> + <location filename="../Helpviewer/HelpWindow.py" line="1259"/> <source>Manage QtHelp Documents</source> <translation>Uspořádat dokumenty QtNápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1258"/> + <location filename="../Helpviewer/HelpWindow.py" line="1263"/> <source>Shows a dialog to manage the QtHelp documentation set</source> <translation>Zobrazit dialog pro uspořádání QtNápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1260"/> + <location filename="../Helpviewer/HelpWindow.py" line="1265"/> <source><b>Manage QtHelp Documents</b><p>Shows a dialog to manage the QtHelp documentation set.</p></source> <translation><b>Uspořádat dokumenty QtNápovědy</b><p>Zobrazit dialog pro uspořádání QtNápovědy.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1670"/> + <location filename="../Helpviewer/HelpWindow.py" line="1675"/> <source>&Window</source> <translation>O&kno</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1739"/> - <source>Filter</source> - <translation>Filtr</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1744"/> + <source>Filter</source> + <translation>Filtr</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1749"/> <source>Filtered by: </source> <translation>Filtrováno: </translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2672"/> + <location filename="../Helpviewer/HelpWindow.py" line="2633"/> <source>Could not find an associated content.</source> <translation>Asociovaný obsah nelze nalézt.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1270"/> + <location filename="../Helpviewer/HelpWindow.py" line="1275"/> <source>Manage QtHelp Filters</source> <translation>Uspořádat filtry QtNápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1274"/> + <location filename="../Helpviewer/HelpWindow.py" line="1279"/> <source>Shows a dialog to manage the QtHelp filters</source> <translation>Zobrazit dialog pro uspořádání filtrů QtNápovědy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1276"/> + <location filename="../Helpviewer/HelpWindow.py" line="1281"/> <source><b>Manage QtHelp Filters</b><p>Shows a dialog to manage the QtHelp filters.</p></source> <translation><b>Uspořádat filtry QtNápovědy</b><p>Zobrazit dialog pro uspořádání filtrů QtNápovědy.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1225"/> + <location filename="../Helpviewer/HelpWindow.py" line="1230"/> <source>Index</source> <translation>Index</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1229"/> + <location filename="../Helpviewer/HelpWindow.py" line="1234"/> <source>Shows the index window</source> <translation>Zobrazit index okna</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1231"/> + <location filename="../Helpviewer/HelpWindow.py" line="1236"/> <source><b>Index</b><p>Shows the index window.</p></source> <translation><b>Index</b><p>Zobrazit index okna.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1239"/> + <location filename="../Helpviewer/HelpWindow.py" line="1244"/> <source>Search</source> <translation>Hledat</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1243"/> + <location filename="../Helpviewer/HelpWindow.py" line="1248"/> <source>Shows the search window</source> <translation>Zobrazit okno hledání</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1245"/> + <location filename="../Helpviewer/HelpWindow.py" line="1250"/> <source><b>Search</b><p>Shows the search window.</p></source> <translation><b>Hledání</b><p>Zobrazit okno hledání.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1285"/> + <location filename="../Helpviewer/HelpWindow.py" line="1290"/> <source>Reindex Documentation</source> <translation>Znovu indexovat dokumentaci</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1289"/> + <location filename="../Helpviewer/HelpWindow.py" line="1294"/> <source>Reindexes the documentation set</source> <translation>Přeindexuje dokumentaci</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1291"/> + <location filename="../Helpviewer/HelpWindow.py" line="1296"/> <source><b>Reindex Documentation</b><p>Reindexes the documentation set.</p></source> <translation><b>Znovu indexovat dokumentaci</b><p>Přeindexuje dokumentaci.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2795"/> + <location filename="../Helpviewer/HelpWindow.py" line="2756"/> <source>Updating search index</source> <translation>Aktualizovat index pro hledání</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2865"/> + <location filename="../Helpviewer/HelpWindow.py" line="2826"/> <source>Looking for Documentation...</source> <translation>Vyhledat dokumentaci...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2900"/> + <location filename="../Helpviewer/HelpWindow.py" line="2861"/> <source>Unfiltered</source> <translation>Nefiltrováno</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2919"/> + <location filename="../Helpviewer/HelpWindow.py" line="2880"/> <source>Help Engine</source> <translation>Engine nápovědy</translation> </message> <message> + <location filename="../Helpviewer/HelpWindow.py" line="671"/> + <source>Private Browsing</source> + <translation>Mód soukromí</translation> + </message> + <message> <location filename="../Helpviewer/HelpWindow.py" line="666"/> - <source>Private Browsing</source> - <translation>Mód soukromí</translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="661"/> <source>Private &Browsing</source> <translation>Mód &soukromí</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="667"/> + <location filename="../Helpviewer/HelpWindow.py" line="672"/> <source><b>Private Browsing</b><p>Enables private browsing. In this mode no history is recorded anymore.</p></source> <translation><b>Mód soukromí</b><p>Zapne mód soukromí. V tomto módu není zaznamenávána historie stran.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2369"/> + <location filename="../Helpviewer/HelpWindow.py" line="2329"/> <source>Full Screen</source> <translation>Celá obrazovka</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1037"/> + <location filename="../Helpviewer/HelpWindow.py" line="1042"/> <source>&Full Screen</source> <translation>&Celá obrazovka</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1037"/> + <location filename="../Helpviewer/HelpWindow.py" line="1042"/> <source>F11</source> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1254"/> + <location filename="../Helpviewer/HelpWindow.py" line="1259"/> <source>Manage QtHelp &Documents</source> <translation>Uspořádat QtHelp &dokumenty</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1270"/> + <location filename="../Helpviewer/HelpWindow.py" line="1275"/> <source>Manage QtHelp &Filters</source> <translation>Uspořádat QtHelp &filtry</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1285"/> + <location filename="../Helpviewer/HelpWindow.py" line="1290"/> <source>&Reindex Documentation</source> <translation>Přeinde&xovat dokumentaci</translation> </message> <message> + <location filename="../Helpviewer/HelpWindow.py" line="1310"/> + <source>Clear private data</source> + <translation>Smazat soukromá data</translation> + </message> + <message> <location filename="../Helpviewer/HelpWindow.py" line="1305"/> - <source>Clear private data</source> - <translation>Smazat soukromá data</translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1300"/> <source>&Clear private data</source> <translation>Smazat &soukromá data</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1307"/> + <location filename="../Helpviewer/HelpWindow.py" line="1312"/> <source><b>Clear private data</b><p>Clears the private data like browsing history, search history or the favicons database.</p></source> <translation><b>Smazat soukromá data</b><p>Smaže soukromá data jako je historie prohlížení, vyhledávání a databáze favicon.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1317"/> + <location filename="../Helpviewer/HelpWindow.py" line="1322"/> <source>Clear &icons database</source> <translation>Smazat databázi &ikon</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1425"/> + <location filename="../Helpviewer/HelpWindow.py" line="1430"/> <source>Show the network monitor dialog</source> <translation>Zobrazit dialog monitoru sítě</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1623"/> + <location filename="../Helpviewer/HelpWindow.py" line="1628"/> <source>&Settings</source> <translation>Na&stavení</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1661"/> + <location filename="../Helpviewer/HelpWindow.py" line="1666"/> <source>&Tools</source> <translation>&Nástroje</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1021"/> - <source>Show page source</source> - <translation>Zobrazit zdroj strany</translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1021"/> - <source>Ctrl+U</source> - <translation></translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1026"/> + <source>Show page source</source> + <translation>Zobrazit zdroj strany</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1026"/> + <source>Ctrl+U</source> + <translation></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1031"/> <source>Show the page source in an editor</source> <translation>Zobrazit zdroj strany v editoru</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1028"/> + <location filename="../Helpviewer/HelpWindow.py" line="1033"/> <source><b>Show page source</b><p>Show the page source in an editor.</p></source> <translation><b>Zobrazit zdroj strany</b><p>Zobrazit zdroj strany v editoru.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1093"/> + <location filename="../Helpviewer/HelpWindow.py" line="1098"/> <source>&Languages...</source> <translation>&Jazyky...</translation> </message> <message> + <location filename="../Helpviewer/HelpWindow.py" line="1103"/> + <source>Configure the accepted languages for web pages</source> + <translation>Nastavit polovené jazyky pro web strany</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1105"/> + <source><b>Languages</b><p>Configure the accepted languages for web pages.</p></source> + <translation><b>Jazyky</b><p>Nastavit polovené jazyky pro web strany.</p></translation> + </message> + <message> <location filename="../Helpviewer/HelpWindow.py" line="1098"/> - <source>Configure the accepted languages for web pages</source> - <translation>Nastavit polovené jazyky pro web strany</translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1100"/> - <source><b>Languages</b><p>Configure the accepted languages for web pages.</p></source> - <translation><b>Jazyky</b><p>Nastavit polovené jazyky pro web strany.</p></translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1093"/> <source>Languages</source> <translation>Jazyky</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1109"/> + <location filename="../Helpviewer/HelpWindow.py" line="1114"/> <source>Cookies</source> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1109"/> + <location filename="../Helpviewer/HelpWindow.py" line="1114"/> <source>C&ookies...</source> <translation>C&ookies...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1113"/> + <location filename="../Helpviewer/HelpWindow.py" line="1118"/> <source>Configure cookies handling</source> <translation>Nastavit ovládání cookies</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1115"/> + <location filename="../Helpviewer/HelpWindow.py" line="1120"/> <source><b>Cookies</b><p>Configure cookies handling.</p></source> <translation><b>Cookies</b><p>Nastavit ovládání cookies.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1751"/> + <location filename="../Helpviewer/HelpWindow.py" line="1756"/> <source>Settings</source> <translation>Nastavení</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="985"/> + <location filename="../Helpviewer/HelpWindow.py" line="990"/> <source>Zoom reset</source> <translation>Resetovat lupu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="985"/> + <location filename="../Helpviewer/HelpWindow.py" line="990"/> <source>Zoom &reset</source> <translation>&Resetovat lupu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="985"/> + <location filename="../Helpviewer/HelpWindow.py" line="990"/> <source>Ctrl+0</source> <comment>View|Zoom reset</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="991"/> + <location filename="../Helpviewer/HelpWindow.py" line="996"/> <source>Reset the zoom of the text</source> <translation>Resetovat lupu textu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1003"/> + <location filename="../Helpviewer/HelpWindow.py" line="1008"/> <source>Zoom text only</source> <translation>Jen lupa textu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1003"/> - <source>Zoom &text only</source> - <translation>Jen lupa &textu</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1008"/> + <source>Zoom &text only</source> + <translation>Jen lupa &textu</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1013"/> <source>Zoom text only; pictures remain constant</source> <translation>Jen lupa textu; obrázky zůstávají beze změn</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1010"/> + <location filename="../Helpviewer/HelpWindow.py" line="1015"/> <source><b>Zoom text only</b><p>Zoom text only; pictures remain constant.</p></source> <translation><b>Jen lupa textu</b><p>Jen lupa textu; Obrázky zůstávají beze změn.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="993"/> + <location filename="../Helpviewer/HelpWindow.py" line="998"/> <source><b>Zoom reset</b><p>Reset the zoom of the text. This sets the zoom factor to 100%.</p></source> <translation><b>Reset lupy</b><p>Reset lupy pro text. Nastaví se lupa na hodnotu 100%.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="456"/> + <location filename="../Helpviewer/HelpWindow.py" line="461"/> <source>New &Window</source> <translation>&Nové okno</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="554"/> + <location filename="../Helpviewer/HelpWindow.py" line="559"/> <source>Import Bookmarks</source> <translation>Importovat záložky</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="554"/> + <location filename="../Helpviewer/HelpWindow.py" line="559"/> <source>&Import Bookmarks...</source> <translation>&Importovat záložky...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="558"/> + <location filename="../Helpviewer/HelpWindow.py" line="563"/> <source>Import bookmarks from other browsers</source> <translation>Import záložek z jiných prohlížečů</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="560"/> + <location filename="../Helpviewer/HelpWindow.py" line="565"/> <source><b>Import Bookmarks</b><p>Import bookmarks from other browsers.</p></source> <translation><b>Import záložek</b><p>Import záložek z jiných prohlížečů.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="569"/> + <location filename="../Helpviewer/HelpWindow.py" line="574"/> <source>Export Bookmarks</source> <translation>Export záložek</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="569"/> + <location filename="../Helpviewer/HelpWindow.py" line="574"/> <source>&Export Bookmarks...</source> <translation>&Exportovat záložky...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="573"/> + <location filename="../Helpviewer/HelpWindow.py" line="578"/> <source>Export the bookmarks into a file</source> <translation>Export záložek do souboru</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="575"/> + <location filename="../Helpviewer/HelpWindow.py" line="580"/> <source><b>Export Bookmarks</b><p>Export the bookmarks into a file.</p></source> <translation><b>Export záložek</b><p>Export záložek do souboru.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="843"/> + <location filename="../Helpviewer/HelpWindow.py" line="848"/> <source>Manage Bookmarks</source> <translation>Správa záložek</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="843"/> + <location filename="../Helpviewer/HelpWindow.py" line="848"/> <source>&Manage Bookmarks...</source> <translation>&Správa záložek...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="843"/> - <source>Ctrl+Shift+B</source> - <comment>Help|Manage bookmarks</comment> - <translation></translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="848"/> + <source>Ctrl+Shift+B</source> + <comment>Help|Manage bookmarks</comment> + <translation></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="853"/> <source>Open a dialog to manage the bookmarks.</source> <translation>Otevřít dialog pro správu záložek.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="850"/> + <location filename="../Helpviewer/HelpWindow.py" line="855"/> <source><b>Manage Bookmarks...</b><p>Open a dialog to manage the bookmarks.</p></source> <translation><b>Správa záložek</b><p>Otevřít dialog pro správu záložek.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="859"/> + <location filename="../Helpviewer/HelpWindow.py" line="864"/> <source>Add &Bookmark...</source> <translation>Přid&at záložku...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="859"/> + <location filename="../Helpviewer/HelpWindow.py" line="864"/> <source>Ctrl+D</source> <comment>Help|Add bookmark</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="866"/> + <location filename="../Helpviewer/HelpWindow.py" line="871"/> <source>Open a dialog to add a bookmark.</source> <translation>Otevřít dialog pro přidání záložky.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="868"/> + <location filename="../Helpviewer/HelpWindow.py" line="873"/> <source><b>Add Bookmark</b><p>Open a dialog to add the current URL as a bookmark.</p></source> <translation><b>Přidat záložku</b><p>Otevřít dialog pro přidání aktuální URL jako záložky.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="876"/> + <location filename="../Helpviewer/HelpWindow.py" line="881"/> <source>Add Folder</source> <translation>Přidat složku</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="876"/> + <location filename="../Helpviewer/HelpWindow.py" line="881"/> <source>Add &Folder...</source> <translation>Přidat s&ložku...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="880"/> + <location filename="../Helpviewer/HelpWindow.py" line="885"/> <source>Open a dialog to add a new bookmarks folder.</source> <translation>Otevřít dialog pro přidání nové složky záložek.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="882"/> + <location filename="../Helpviewer/HelpWindow.py" line="887"/> <source><b>Add Folder...</b><p>Open a dialog to add a new bookmarks folder.</p></source> <translation><b>Přidat složku...</b><p>Otevřít dialog pro přidání nové složky záložek.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="891"/> + <location filename="../Helpviewer/HelpWindow.py" line="896"/> <source>Bookmark All Tabs</source> <translation>Vytvořit záložky pro všechny taby</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="891"/> + <location filename="../Helpviewer/HelpWindow.py" line="896"/> <source>Bookmark All Tabs...</source> <translation>Vytvořit záložky pro všechny taby...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="895"/> + <location filename="../Helpviewer/HelpWindow.py" line="900"/> <source>Bookmark all open tabs.</source> <translation>Vytvořit záložky pro všechny otevřené taby.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="897"/> + <location filename="../Helpviewer/HelpWindow.py" line="902"/> <source><b>Bookmark All Tabs...</b><p>Open a dialog to add a new bookmarks folder for all open tabs.</p></source> <translation><b>Vytvořit záložky pro všechny taby...</b><p>Otevřít dialog pro přidání nové složky záložek pro všechny otevřené taby.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2168"/> + <location filename="../Helpviewer/HelpWindow.py" line="2126"/> <source>Saved Tabs</source> <translation>Uložkt taby</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="747"/> + <location filename="../Helpviewer/HelpWindow.py" line="752"/> <source>F5</source> <comment>Go|Reload</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="764"/> + <location filename="../Helpviewer/HelpWindow.py" line="769"/> <source>Stop</source> <translation>Zastavit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="764"/> + <location filename="../Helpviewer/HelpWindow.py" line="769"/> <source>&Stop</source> <translation>Za&stavit</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="764"/> + <location filename="../Helpviewer/HelpWindow.py" line="769"/> <source>Ctrl+.</source> <comment>Go|Stop</comment> <translation>Ctrl+.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="764"/> + <location filename="../Helpviewer/HelpWindow.py" line="769"/> <source>Esc</source> <comment>Go|Stop</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="771"/> + <location filename="../Helpviewer/HelpWindow.py" line="776"/> <source>Stop loading</source> <translation>Zastavit načítání</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="772"/> + <location filename="../Helpviewer/HelpWindow.py" line="777"/> <source><b>Stop</b><p>Stops loading of the current tab.</p></source> <translation><b>Zastavit</b><p>Zastavit načítání aktuálního tabu.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="504"/> + <location filename="../Helpviewer/HelpWindow.py" line="509"/> <source>&Save As...</source> <translation>Uložit j&ako...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="504"/> + <location filename="../Helpviewer/HelpWindow.py" line="509"/> <source>Shift+Ctrl+S</source> <comment>File|Save As</comment> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="510"/> + <location filename="../Helpviewer/HelpWindow.py" line="515"/> <source>Save the current page to disk</source> <translation>Uložit aktuální stranu na disk</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="512"/> + <location filename="../Helpviewer/HelpWindow.py" line="517"/> <source><b>Save As...</b><p>Saves the current page to disk.</p></source> <translation><b>Uložit jako...</b><p>Uložit aktuální stranu na disk.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1333"/> - <source>Configure Search Engines</source> - <translation>Konfigurovat vyhledávací enginy</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1338"/> + <source>Configure Search Engines</source> + <translation>Konfigurovat vyhledávací enginy</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1343"/> <source>Configure the available search engines</source> <translation>Konfigurovat dostupné vyhledávací enginy</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1340"/> + <location filename="../Helpviewer/HelpWindow.py" line="1345"/> <source><b>Configure Search Engines...</b><p>Opens a dialog to configure the available search engines.</p></source> <translation><b>Konfigurivat vyhledávací enginy...</b><p>Otevře dialog pro konfiguraci dostupných vyhledávacích enginů.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1350"/> + <location filename="../Helpviewer/HelpWindow.py" line="1355"/> <source>Manage Saved Passwords</source> <translation>Spravovat uložená hesla</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1350"/> + <location filename="../Helpviewer/HelpWindow.py" line="1355"/> <source>Manage Saved Passwords...</source> <translation>Spravovat uložená hesla...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1356"/> + <location filename="../Helpviewer/HelpWindow.py" line="1361"/> <source>Manage the saved passwords</source> <translation>Spravovat vaše uložená hesla</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1358"/> + <location filename="../Helpviewer/HelpWindow.py" line="1363"/> <source><b>Manage Saved Passwords...</b><p>Opens a dialog to manage the saved passwords.</p></source> <translation><b>Spravovat uložená hesla...</b><p>Otevře dialog pro spravování uložených hesel.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1366"/> + <location filename="../Helpviewer/HelpWindow.py" line="1371"/> <source>Ad Block</source> <translation></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1366"/> + <location filename="../Helpviewer/HelpWindow.py" line="1371"/> <source>&Ad Block...</source> <translation>&Ad Block...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1372"/> + <location filename="../Helpviewer/HelpWindow.py" line="1377"/> <source>Configure AdBlock subscriptions and rules</source> <translation>Konfigurovat AdBlock odebírání a pravidla</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1374"/> + <location filename="../Helpviewer/HelpWindow.py" line="1379"/> <source><b>Ad Block...</b><p>Opens a dialog to configure AdBlock subscriptions and rules.</p></source> <translation><b>Ad Block...</b><p>Otevře dialog pro konfiguraci AdBlock odebírání a pravidel.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="599"/> - <source>Print as PDF</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="604"/> + <source>Print as PDF</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="609"/> <source>Print the displayed help as PDF</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="606"/> + <location filename="../Helpviewer/HelpWindow.py" line="611"/> <source><b>Print as PDF</b><p>Print the displayed help text as a PDF file.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1124"/> - <source>Offline Storage</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1124"/> - <source>Offline &Storage...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1129"/> + <source>Offline Storage</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1129"/> + <source>Offline &Storage...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1134"/> <source>Configure offline storage</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1131"/> + <location filename="../Helpviewer/HelpWindow.py" line="1136"/> <source><b>Offline Storage</b><p>Opens a dialog to configure offline storage.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1333"/> + <location filename="../Helpviewer/HelpWindow.py" line="1338"/> <source>Configure Search &Engines...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2399"/> + <location filename="../Helpviewer/HelpWindow.py" line="2359"/> <source><b>Are you sure you want to turn on private browsing?</b><p>When private browsing is turned on, web pages are not added to the history, searches are not added to the list of recent searches and web site icons and cookies are not stored. HTML5 offline storage will be deactivated. Until you close the window, you can still click the Back and Forward buttons to return to the web pages you have opened.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1579"/> + <location filename="../Helpviewer/HelpWindow.py" line="1584"/> <source>Text Encoding</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3350"/> + <location filename="../Helpviewer/HelpWindow.py" line="3312"/> <source>ISO</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3351"/> + <location filename="../Helpviewer/HelpWindow.py" line="3313"/> <source>Windows</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3352"/> + <location filename="../Helpviewer/HelpWindow.py" line="3314"/> <source>ISCII</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3353"/> + <location filename="../Helpviewer/HelpWindow.py" line="3315"/> <source>Unicode</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3354"/> + <location filename="../Helpviewer/HelpWindow.py" line="3316"/> <source>Other</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3355"/> + <location filename="../Helpviewer/HelpWindow.py" line="3317"/> <source>IBM</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3377"/> + <location filename="../Helpviewer/HelpWindow.py" line="3339"/> <source>Default Encoding</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1436"/> + <location filename="../Helpviewer/HelpWindow.py" line="1441"/> <source>Downloads</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1440"/> + <location filename="../Helpviewer/HelpWindow.py" line="1445"/> <source>Shows the downloads window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1442"/> + <location filename="../Helpviewer/HelpWindow.py" line="1447"/> <source><b>Downloads</b><p>Shows the downloads window.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1829"/> + <location filename="../Helpviewer/HelpWindow.py" line="1834"/> <source>VirusTotal</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1835"/> - <source><h2>File search</h2><p>In order to search for the last VirusTotal report on a given file just enter its hash. Currently the allowed hashes are MD5, SHA1 and SHA256. You can also search for a particular file report by typing in its permalink id.</p><h2>URL search</h2><p>URL searches are simple, just type in the given URL, the application will normalize it and compare it with the entries in VirusTotal's database. Alternatively you may enter the MD5 hash of an URL preceded by "url:", e.g. url:7f911bbcf618f052ac6b9928600d2820.</p><h2>User search</h2><p>Do you want to know whether a friend has a VT Community account? Simply type in his nick preceded by the symbol "@", e.g. @EmilianoMartinez.</p><h2>Search through comments</h2><p>The comments in VT Community may often help in disinfecting your PC or may proof themselves useful when analysing a particular malware sample, comment tags enable users to search through the VT Community reviews. The standard file tags are: {0} The standard URL tags are: {1}User generated tags are preceded by the symbol "#", e.g. #disinfect.</p></source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1883"/> - <source>Search VirusTotal</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1889"/> + <location filename="../Helpviewer/HelpWindow.py" line="1838"/> <source>Scan current site</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3636"/> + <location filename="../Helpviewer/HelpWindow.py" line="3598"/> <source>VirusTotal Scan</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3636"/> + <location filename="../Helpviewer/HelpWindow.py" line="3598"/> <source><p>The VirusTotal scan could not be scheduled.<p> <p>Reason: {0}</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1451"/> + <location filename="../Helpviewer/HelpWindow.py" line="1456"/> <source>RSS Feeds Dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1451"/> + <location filename="../Helpviewer/HelpWindow.py" line="1456"/> <source>&RSS Feeds Dialog...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1451"/> + <location filename="../Helpviewer/HelpWindow.py" line="1456"/> <source>Ctrl+Shift+F</source> <comment>Help|RSS Feeds Dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1457"/> + <location filename="../Helpviewer/HelpWindow.py" line="1462"/> <source>Open a dialog showing the configured RSS feeds.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1459"/> + <location filename="../Helpviewer/HelpWindow.py" line="1464"/> <source><b>RSS Feeds Dialog...</b><p>Open a dialog to show the configured RSS feeds. It can be used to mange the feeds and to show their contents.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1469"/> + <location filename="../Helpviewer/HelpWindow.py" line="1474"/> <source>Siteinfo Dialog</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1469"/> + <location filename="../Helpviewer/HelpWindow.py" line="1474"/> <source>&Siteinfo Dialog...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1469"/> + <location filename="../Helpviewer/HelpWindow.py" line="1474"/> <source>Ctrl+Shift+I</source> <comment>Help|Siteinfo Dialog</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1475"/> + <location filename="../Helpviewer/HelpWindow.py" line="1480"/> <source>Open a dialog showing some information about the current site.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1477"/> + <location filename="../Helpviewer/HelpWindow.py" line="1482"/> <source><b>Siteinfo Dialog...</b><p>Opens a dialog showing some information about the current site.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1761"/> + <location filename="../Helpviewer/HelpWindow.py" line="1766"/> <source>Tools</source> <translation type="unfinished">Nástroje</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="953"/> + <location filename="../Helpviewer/HelpWindow.py" line="958"/> <source>Zoom In</source> <comment>View|Zoom in</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="969"/> + <location filename="../Helpviewer/HelpWindow.py" line="974"/> <source>Zoom Out</source> <comment>View|Zoom out</comment> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1420"/> + <location filename="../Helpviewer/HelpWindow.py" line="1425"/> <source>Network Monitor</source> <translation type="unfinished">Monitor sítě</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1420"/> + <location filename="../Helpviewer/HelpWindow.py" line="1425"/> <source>&Network Monitor...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1427"/> + <location filename="../Helpviewer/HelpWindow.py" line="1432"/> <source><b>Network Monitor...</b><p>Shows the network monitor dialog.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2376"/> + <location filename="../Helpviewer/HelpWindow.py" line="2336"/> <source>Restore Window</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1486"/> + <location filename="../Helpviewer/HelpWindow.py" line="1491"/> <source>Manage User Agent Settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1486"/> + <location filename="../Helpviewer/HelpWindow.py" line="1491"/> <source>Manage &User Agent Settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1490"/> + <location filename="../Helpviewer/HelpWindow.py" line="1495"/> <source>Shows a dialog to manage the User Agent settings</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1492"/> + <location filename="../Helpviewer/HelpWindow.py" line="1497"/> <source><b>Manage User Agent Settings</b><p>Shows a dialog to manage the User Agent settings.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1648"/> + <location filename="../Helpviewer/HelpWindow.py" line="1653"/> <source>Global User Agent</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="504"/> + <location filename="../Helpviewer/HelpWindow.py" line="509"/> <source>Save As</source> <translation type="unfinished">Uložit jako</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="520"/> + <location filename="../Helpviewer/HelpWindow.py" line="525"/> <source>Save Page Screen</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="520"/> - <source>Save Page Screen...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="525"/> + <source>Save Page Screen...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="530"/> <source>Save the current page as a screen shot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="527"/> + <location filename="../Helpviewer/HelpWindow.py" line="532"/> <source><b>Save Page Screen...</b><p>Saves the current page as a screen shot.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1501"/> + <location filename="../Helpviewer/HelpWindow.py" line="1506"/> <source>Synchronize data</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1501"/> - <source>&Synchronize Data...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1506"/> + <source>&Synchronize Data...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1511"/> <source>Shows a dialog to synchronize data via the network</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1508"/> + <location filename="../Helpviewer/HelpWindow.py" line="1513"/> <source><b>Synchronize Data...</b><p>This shows a dialog to synchronize data via the network.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1383"/> + <location filename="../Helpviewer/HelpWindow.py" line="1388"/> <source>ClickToFlash</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1383"/> + <location filename="../Helpviewer/HelpWindow.py" line="1388"/> <source>&ClickToFlash...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1389"/> + <location filename="../Helpviewer/HelpWindow.py" line="1394"/> <source>Configure ClickToFlash whitelist</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1391"/> + <location filename="../Helpviewer/HelpWindow.py" line="1396"/> <source><b>ClickToFlash...</b><p>Opens a dialog to configure the ClickToFlash whitelist.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1140"/> + <location filename="../Helpviewer/HelpWindow.py" line="1145"/> <source>Personal Information</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1140"/> + <location filename="../Helpviewer/HelpWindow.py" line="1145"/> <source>Personal Information...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1146"/> + <location filename="../Helpviewer/HelpWindow.py" line="1151"/> <source>Configure personal information for completing form fields</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1148"/> + <location filename="../Helpviewer/HelpWindow.py" line="1153"/> <source><b>Personal Information...</b><p>Opens a dialog to configure the personal information used for completing form fields.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1158"/> + <location filename="../Helpviewer/HelpWindow.py" line="1163"/> <source>GreaseMonkey Scripts</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1158"/> + <location filename="../Helpviewer/HelpWindow.py" line="1163"/> <source>GreaseMonkey Scripts...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1164"/> + <location filename="../Helpviewer/HelpWindow.py" line="1169"/> <source>Configure the GreaseMonkey Scripts</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1166"/> + <location filename="../Helpviewer/HelpWindow.py" line="1171"/> <source><b>GreaseMonkey Scripts...</b><p>Opens a dialog to configure the available GreaseMonkey Scripts.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1402"/> + <location filename="../Helpviewer/HelpWindow.py" line="1407"/> <source>Manage SSL Certificates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1402"/> + <location filename="../Helpviewer/HelpWindow.py" line="1407"/> <source>Manage SSL Certificates...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1408"/> + <location filename="../Helpviewer/HelpWindow.py" line="1413"/> <source>Manage the saved SSL certificates</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1410"/> + <location filename="../Helpviewer/HelpWindow.py" line="1415"/> <source><b>Manage SSL Certificates...</b><p>Opens a dialog to manage the saved SSL certificates.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1176"/> - <source>Edit Message Filters</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1176"/> - <source>Edit Message Filters...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1181"/> + <source>Edit Message Filters</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1181"/> + <source>Edit Message Filters...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1186"/> <source>Edit the message filters used to suppress unwanted messages</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1183"/> + <location filename="../Helpviewer/HelpWindow.py" line="1188"/> <source><b>Edit Message Filters</b><p>Opens a dialog to edit the message filters used to suppress unwanted messages been shown in an error window.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="535"/> + <location filename="../Helpviewer/HelpWindow.py" line="540"/> <source>Save Visible Page Screen</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="535"/> - <source>Save Visible Page Screen...</source> - <translation type="unfinished"></translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="540"/> + <source>Save Visible Page Screen...</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="545"/> <source>Save the visible part of the current page as a screen shot</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="543"/> + <location filename="../Helpviewer/HelpWindow.py" line="548"/> <source><b>Save Visible Page Screen...</b><p>Saves the visible part of the current page as a screen shot.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2875"/> + <location filename="../Helpviewer/HelpWindow.py" line="2836"/> <source>eric6 Web Browser</source> <translation type="unfinished">eric5 web prohlížeč {6 ?}</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="684"/> + <location filename="../Helpviewer/HelpWindow.py" line="689"/> <source>Quit the eric6 Web Browser</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="685"/> + <location filename="../Helpviewer/HelpWindow.py" line="690"/> <source><b>Quit</b><p>Quit the eric6 Web Browser.</p></source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2074"/> + <location filename="../Helpviewer/HelpWindow.py" line="2032"/> <source><b>eric6 Web Browser - {0}</b><p>The eric6 Web Browser is a combined help file and HTML browser. It is part of the eric6 development toolset.</p></source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="3633"/> + <source>IP Address Report</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="3643"/> + <source>Domain Report</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="3624"/> + <source>Enter a valid IPv4 address in dotted quad notation:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="3633"/> + <source>The given IP address is not in dotted quad notation.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="3643"/> + <source>Enter a valid domain name:</source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>Hg</name> @@ -26608,12 +26623,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/History/HistoryMenu.py" line="402"/> + <location filename="../Helpviewer/History/HistoryMenu.py" line="403"/> <source>Restore All Closed Tabs</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/History/HistoryMenu.py" line="405"/> + <location filename="../Helpviewer/History/HistoryMenu.py" line="406"/> <source>Clear List</source> <translation type="unfinished"></translation> </message> @@ -33499,12 +33514,12 @@ <context> <name>NetworkAccessManager</name> <message> - <location filename="../Helpviewer/Network/NetworkAccessManager.py" line="216"/> + <location filename="../Helpviewer/Network/NetworkAccessManager.py" line="217"/> <source><b>Enter username and password for '{0}'</b></source> <translation><b>Zadejte uživatelské jméno a heslo pro '{0}'</b></translation> </message> <message> - <location filename="../Helpviewer/Network/NetworkAccessManager.py" line="213"/> + <location filename="../Helpviewer/Network/NetworkAccessManager.py" line="214"/> <source><b>Enter username and password for '{0}', realm '{1}'</b></source> <translation><b>Zadejte uživatelské jméno a heslo pro {0}', realm '{1}'</b></translation> </message> @@ -34558,7 +34573,7 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/Passwords/PasswordManager.py" line="631"/> + <location filename="../Helpviewer/Passwords/PasswordManager.py" line="632"/> <source>Re-encoding saved passwords...</source> <translation type="unfinished"></translation> </message> @@ -34574,12 +34589,12 @@ <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/Passwords/PasswordManager.py" line="631"/> + <location filename="../Helpviewer/Passwords/PasswordManager.py" line="632"/> <source>%v/%m Passwords</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/Passwords/PasswordManager.py" line="636"/> + <location filename="../Helpviewer/Passwords/PasswordManager.py" line="637"/> <source>Passwords</source> <translation type="unfinished"></translation> </message> @@ -63543,20 +63558,196 @@ <context> <name>VirusTotalAPI</name> <message> - <location filename="../Helpviewer/VirusTotalApi.py" line="89"/> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="100"/> <source>Request limit has been reached.</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../Helpviewer/VirusTotalApi.py" line="90"/> - <source>Invalid key given.</source> - <translation type="unfinished"></translation> - </message> - <message> - <location filename="../Helpviewer/VirusTotalApi.py" line="91"/> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="101"/> <source>Requested item is not present.</source> <translation type="unfinished"></translation> </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="102"/> + <source>Requested item is still queued.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="303"/> + <source>VirusTotal IP Address Report</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="297"/> + <source>VirusTotal does not have any information for the given IP address.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="303"/> + <source>The submitted IP address is invalid.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="365"/> + <source>VirusTotal Domain Report</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="359"/> + <source>VirusTotal does not have any information for the given domain.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="365"/> + <source>The submitted domain address is invalid.</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalApi.py" line="390"/> + <source>not available</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>VirusTotalDomainReportDialog</name> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="14"/> + <source>Domain Report</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="47"/> + <source>Categorizations</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="132"/> + <source>Resolutions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="151"/> + <source>IP-Address</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="156"/> + <source>Resolved Date</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="173"/> + <source>Subdomains</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="200"/> + <source>Detected URLs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="219"/> + <source>URL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="224"/> + <source>Scan Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="229"/> + <source>Scan Date</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.py" line="50"/> + <source><b>Report for domain {0}</b></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.py" line="66"/> + <source>{0}/{1}</source> + <comment>positives / total</comment> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalDomainReportDialog.ui" line="115"/> + <source>Whois</source> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>VirusTotalIpReportDialog</name> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="14"/> + <source>IP Address Report</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="41"/> + <source>Owner:</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="69"/> + <source>Resolutions</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="88"/> + <source>Hostname</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="93"/> + <source>Resolved Date</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="110"/> + <source>Detected URLs</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="129"/> + <source>URL</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="134"/> + <source>Scan Result</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.ui" line="139"/> + <source>Scan Date</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.py" line="41"/> + <source><b>Report for IP {0}</b></source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalIpReportDialog.py" line="58"/> + <source>{0}/{1}</source> + <comment>positives / total</comment> + <translation type="unfinished"></translation> + </message> +</context> +<context> + <name>VirusTotalWhoisDialog</name> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalWhoisDialog.ui" line="14"/> + <source>Whois Information</source> + <translation type="unfinished"></translation> + </message> + <message> + <location filename="../Helpviewer/VirusTotal/VirusTotalWhoisDialog.py" line="33"/> + <source><b>Whois information for domain {0}</b></source> + <translation type="unfinished"></translation> + </message> </context> <context> <name>VmListspacePlugin</name> @@ -63911,12 +64102,12 @@ <context> <name>eric6</name> <message> - <location filename="../eric6.py" line="297"/> + <location filename="../eric6.py" line="301"/> <source>Starting...</source> <translation type="unfinished"></translation> </message> <message> - <location filename="../eric6.py" line="302"/> + <location filename="../eric6.py" line="306"/> <source>Generating Main Window...</source> <translation type="unfinished">Generování hlavního okna...</translation> </message>
--- a/i18n/eric6_de.ts Sat Jul 25 20:00:25 2015 +0200 +++ b/i18n/eric6_de.ts Sun Jul 26 11:12:08 2015 +0200 @@ -289,47 +289,47 @@ <context> <name>AdBlockSubscription</name> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="315"/> <source>Load subscription rules</source> <translation>Abonnementregeln laden</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="304"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="305"/> <source>Unable to open adblock file '{0}' for reading.</source> <translation>Adblock-Datei „{0}“ konnte nicht zum Lesen geöffnet werden.</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="487"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="488"/> <source>Downloading subscription rules</source> <translation>Lade Abonnementregeln herunter</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="412"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="413"/> <source><p>Subscription rules could not be downloaded.</p><p>Error: {0}</p></source> <translation><p>Abonnementregeln konnten nicht heruntergeladen werden.</p><p>Fehler: {0}</p></translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="425"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="426"/> <source>Got empty subscription rules.</source> <translation>Habe leere Abonnementregeln erhalten.</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="510"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="511"/> <source>Unable to open adblock file '{0}' for writing.</source> <translation>Adblock-Datei „{0}“ konnte nicht zum Schreiben geöffnet werden.</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="510"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="511"/> <source>Saving subscription rules</source> <translation>Speichern der Abonnementregeln</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="314"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="315"/> <source>AdBlock file '{0}' does not start with [Adblock.</source> <translation>AdBlock-Datei „{0}“ startet nicht mit [Adblock.</translation> </message> <message> - <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="487"/> + <location filename="../Helpviewer/AdBlock/AdBlockSubscription.py" line="488"/> <source><p>AdBlock subscription <b>{0}</b> has a wrong checksum.<br/>Found: {1}<br/>Calculated: {2}<br/>Use it anyway?</p></source> <translation><p>AdBlock Abonnement <b>{0}</b> hat eine falsche Prüfsumme.<br/>Gefunden: {1}<br/>Berechnet: {2}<br/>Trotzdem verwenden?</p></translation> </message> @@ -4276,22 +4276,22 @@ <translation>unbekannt</translation> </message> <message> - <location filename="../Cooperation/Connection.py" line="217"/> + <location filename="../Cooperation/Connection.py" line="218"/> <source>New Connection</source> <translation>Neue Verbindung</translation> </message> <message> - <location filename="../Cooperation/Connection.py" line="217"/> + <location filename="../Cooperation/Connection.py" line="218"/> <source><p>Accept connection from <strong>{0}@{1}</strong>?</p></source> <translation><p>Verbindungswunsch von <strong>{0}@{1}</strong> annehmen?</p></translation> </message> <message> - <location filename="../Cooperation/Connection.py" line="454"/> + <location filename="../Cooperation/Connection.py" line="457"/> <source>* Connection to {0}:{1} refused.</source> <translation>* Verbindung zu {0}:{1} abgelehnt.</translation> </message> <message> - <location filename="../Cooperation/Connection.py" line="207"/> + <location filename="../Cooperation/Connection.py" line="208"/> <source>* Connection attempted by banned user '{0}'.</source> <translation>* Verbindungsversuch durch gebannten Nutzer „{0}“.</translation> </message> @@ -4818,32 +4818,32 @@ <translation>&Filtere mit:</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="525"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="526"/> <source>Code Generation</source> <translation>Codeerzeugung</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="410"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="411"/> <source><p>Could not open the code template file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Die Codevorlagendatei „{0}“ konnte nicht geöffnet werden.</p><p>Ursache: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="446"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="447"/> <source><p>Could not open the source file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Die Quelltextdatei „{0}“ konnte nicht geöffnet werden.</p><p>Ursache: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="525"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="526"/> <source><p>Could not write the source file "{0}".</p><p>Reason: {1}</p></source> <translation><p>Die Quelltextdatei „{0}“ konnte nicht geschrieben werden.</p><p>Ursache: {1}</p></translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="340"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="341"/> <source>uic error</source> <translation>uic-Fehler</translation> </message> <message> - <location filename="../Project/CreateDialogCodeDialog.py" line="340"/> + <location filename="../Project/CreateDialogCodeDialog.py" line="341"/> <source><p>There was an error loading the form <b>{0}</b>.</p><p>{1}</p></source> <translation><p>Es gab einen Fehler beim Laden des Formulars <b>{0}</b>.</p><p>{1}</p></translation> </message> @@ -7052,47 +7052,47 @@ <translation>Drücken, um die geladenen Datei zu öffnen</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="238"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="239"/> <source>Download canceled: {0}</source> <translation>Download abgebrochen: {0}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="228"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="229"/> <source>Save File</source> <translation>Datei speichern</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="258"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="259"/> <source>Download directory ({0}) couldn't be created.</source> <translation>Das Downloadverzeichnis ({0}) konnte nicht erzeugt werden.</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="436"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="421"/> <source>Error opening save file: {0}</source> <translation>Fehler beim Öffnen der zu speichernden Datei: {0}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="449"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="434"/> <source>Error saving: {0}</source> <translation>Fehler beim Speichern: {0}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="462"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="447"/> <source>Network Error: {0}</source> <translation>Netzwerkfehler: {0}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="577"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="562"/> <source>?</source> <translation>?</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="593"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="578"/> <source>{0} of {1} - Stopped</source> <translation>{0} von {1} – Angehalten</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="208"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="209"/> <source>VirusTotal scan scheduled: {0}</source> <translation>Prüfung mit VirusTotal beauftragt: {0}</translation> </message> @@ -7102,14 +7102,14 @@ <translation>Drücken, um den Download zu pausieren</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="576"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="561"/> <source>{0} of {1} ({2}/sec) {3}</source> <translation>{0} von {1} ({2}/s) {3}</translation> </message> <message> - <location filename="../Helpviewer/Download/DownloadItem.py" line="585"/> + <location filename="../Helpviewer/Download/DownloadItem.py" line="570"/> <source>{0} downloaded SHA1: {1} MD5: {2}</source> @@ -14200,27 +14200,27 @@ <context> <name>FeaturePermissionBar</name> <message> - <location filename="../Helpviewer/FeaturePermissionBar.py" line="44"/> + <location filename="../Helpviewer/FeaturePermissionBar.py" line="45"/> <source>{0} wants to use desktop notifications.</source> <translation>{0} möchte Desktopmitteilungen nutzen.</translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissionBar.py" line="46"/> + <location filename="../Helpviewer/FeaturePermissionBar.py" line="47"/> <source>{0} wants to use your position.</source> <translation>{0} möchte die Position nutzen.</translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissionBar.py" line="55"/> - <source>Allow</source> - <translation>Erlauben</translation> - </message> - <message> <location filename="../Helpviewer/FeaturePermissionBar.py" line="56"/> + <source>Allow</source> + <translation>Erlauben</translation> + </message> + <message> + <location filename="../Helpviewer/FeaturePermissionBar.py" line="57"/> <source>Deny</source> <translation>Ablehnen</translation> </message> <message> - <location filename="../Helpviewer/FeaturePermissionBar.py" line="85"/> + <location filename="../Helpviewer/FeaturePermissionBar.py" line="86"/> <source>{0} wants to use an unknown feature.</source> <translation>{0} möchte ein unbekanntes Feature nutzen.</translation> </message> @@ -17519,1708 +17519,1723 @@ <context> <name>HelpWindow</name> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2026"/> + <location filename="../Helpviewer/HelpWindow.py" line="1984"/> <source>Open File</source> <translation>Datei öffnen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="471"/> + <location filename="../Helpviewer/HelpWindow.py" line="476"/> <source>&Open File</source> <translation>Datei &öffnen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="477"/> + <location filename="../Helpviewer/HelpWindow.py" line="482"/> <source>Open a help file for display</source> <translation>Öffnet eine Hilfedatei zur Anzeige</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="478"/> + <location filename="../Helpviewer/HelpWindow.py" line="483"/> <source><b>Open File</b><p>This opens a new help file for display. It pops up a file selection dialog.</p></source> <translation><b>Datei öffnen</b><p>Dies öffnet eine neue Hilfedatei zur Anzeige. Es wird zunächst ein Dateiauswahldialog angezeigt.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="584"/> + <location filename="../Helpviewer/HelpWindow.py" line="589"/> <source>&Print</source> <translation>&Drucken</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="590"/> + <location filename="../Helpviewer/HelpWindow.py" line="595"/> <source>Print the displayed help</source> <translation>Druckt die angezeigte Hilfe</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="591"/> + <location filename="../Helpviewer/HelpWindow.py" line="596"/> <source><b>Print</b><p>Print the displayed help text.</p></source> <translation><b>Drucken</b><p>Druckt den angezeigten Hilfetext.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="631"/> + <location filename="../Helpviewer/HelpWindow.py" line="636"/> <source>&Close</source> <translation>Schl&ießen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="637"/> + <location filename="../Helpviewer/HelpWindow.py" line="642"/> <source>Close the current help window</source> <translation>Schließt das aktuelle Fenster</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="696"/> + <location filename="../Helpviewer/HelpWindow.py" line="701"/> <source>&Backward</source> <translation>&Zurück</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="704"/> + <location filename="../Helpviewer/HelpWindow.py" line="709"/> <source><b>Backward</b><p>Moves one help screen backward. If none is available, this action is disabled.</p></source> <translation><b>Zurück</b><p>Bewegt die Hilfeanzeige rückwärts. Falls keine Anzeige möglich ist, ist diese Aktion inaktiv.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="713"/> + <location filename="../Helpviewer/HelpWindow.py" line="718"/> <source>&Forward</source> <translation>&Vorwärts</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="720"/> + <location filename="../Helpviewer/HelpWindow.py" line="725"/> <source>Move one help screen forward</source> <translation>Eine Hilfeseite vorwärts</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="722"/> + <location filename="../Helpviewer/HelpWindow.py" line="727"/> <source><b>Forward</b><p>Moves one help screen forward. If none is available, this action is disabled.</p></source> <translation><b>Vorwärts</b><p>Bewegt die Hilfeanzeige vorwärts. Falls keine Anzeige möglich ist, ist diese Aktion inaktiv.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="731"/> + <location filename="../Helpviewer/HelpWindow.py" line="736"/> <source>&Home</source> <translation>&Anfang</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="737"/> + <location filename="../Helpviewer/HelpWindow.py" line="742"/> <source>Move to the initial help screen</source> <translation>Zur ersten Hilfeseite</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="739"/> + <location filename="../Helpviewer/HelpWindow.py" line="744"/> <source><b>Home</b><p>Moves to the initial help screen.</p></source> <translation><b>Anfang</b><p>Zeigt die erste Hilfeseite an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="912"/> + <location filename="../Helpviewer/HelpWindow.py" line="917"/> <source>Context sensitive help</source> <translation>Kontextsensitive Hilfe</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="913"/> + <location filename="../Helpviewer/HelpWindow.py" line="918"/> <source><b>Display context sensitive help</b><p>In What's This? mode, the mouse cursor shows an arrow with a question mark, and you can click on the interface elements to get a short description of what they do and how to use them. In dialogs, this feature can be accessed using the context help button in the titlebar.</p></source> <translation><b>Zeige kontextsensitive Hilfe an<b></p>Im „Was ist das?“-Modus (der Mauszeiger stellt einen Pfeil mit Fragezeichen dar) wird auf einen Mausklick eine kurze Hilfebeschreibung zu dem ausgewählten MMI-Element angezeigt. In Dialogen kann diese Funktionalität durch den entsprechenden Knopf im Fensterkopf erreicht werden.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="925"/> + <location filename="../Helpviewer/HelpWindow.py" line="930"/> <source>&About</source> <translation>&Über</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="929"/> + <location filename="../Helpviewer/HelpWindow.py" line="934"/> <source>Display information about this software</source> <translation>Zeigt Informationen zu diesem Programm an</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="939"/> + <location filename="../Helpviewer/HelpWindow.py" line="944"/> <source>About &Qt</source> <translation>Über &Qt</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="943"/> + <location filename="../Helpviewer/HelpWindow.py" line="948"/> <source>Display information about the Qt toolkit</source> <translation>Zeige Informationen über das Qt-Toolkit an</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1538"/> + <location filename="../Helpviewer/HelpWindow.py" line="1543"/> <source>&File</source> <translation>&Datei</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1585"/> + <location filename="../Helpviewer/HelpWindow.py" line="1590"/> <source>&Go</source> <translation>&Gehe zu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1608"/> + <location filename="../Helpviewer/HelpWindow.py" line="1613"/> <source>&Bookmarks</source> <translation>&Lesezeichen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1681"/> + <location filename="../Helpviewer/HelpWindow.py" line="1686"/> <source>&Help</source> <translation>&Hilfe</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="703"/> + <location filename="../Helpviewer/HelpWindow.py" line="708"/> <source>Move one help screen backward</source> <translation>Eine Hilfeseite zurück</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="931"/> + <location filename="../Helpviewer/HelpWindow.py" line="936"/> <source><b>About</b><p>Display some information about this software.</p></source> <translation><b>Über</b><p>Zeigt einige Informationen über dieses Programm an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="945"/> + <location filename="../Helpviewer/HelpWindow.py" line="950"/> <source><b>About Qt</b><p>Display some information about the Qt toolkit.</p></source> <translation><b>Über Qt</b><p>Zeige informationen über das Qt-Toolkit an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="960"/> + <location filename="../Helpviewer/HelpWindow.py" line="965"/> <source>Zoom in on the text</source> <translation>Text vergrößern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="976"/> + <location filename="../Helpviewer/HelpWindow.py" line="981"/> <source>Zoom out on the text</source> <translation>Text verkleinern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="780"/> + <location filename="../Helpviewer/HelpWindow.py" line="785"/> <source>&Copy</source> <translation>&Kopieren</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="786"/> + <location filename="../Helpviewer/HelpWindow.py" line="791"/> <source>Copy the selected text</source> <translation>Kopiert den ausgewählten Text</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="787"/> + <location filename="../Helpviewer/HelpWindow.py" line="792"/> <source><b>Copy</b><p>Copy the selected text to the clipboard.</p></source> <translation><b>Kopieren</b><p>Kopiert den ausgewählten Text in die Zwischenablage.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1560"/> + <location filename="../Helpviewer/HelpWindow.py" line="1565"/> <source>&Edit</source> <translation>&Bearbeiten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1568"/> + <location filename="../Helpviewer/HelpWindow.py" line="1573"/> <source>&View</source> <translation>&Ansicht</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="678"/> + <location filename="../Helpviewer/HelpWindow.py" line="683"/> <source>&Quit</source> <translation>B&eenden</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="906"/> + <location filename="../Helpviewer/HelpWindow.py" line="911"/> <source>&What's This?</source> <translation>&Was ist das?</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="953"/> + <location filename="../Helpviewer/HelpWindow.py" line="958"/> <source>Zoom &in</source> <translation>Ver&größern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="961"/> + <location filename="../Helpviewer/HelpWindow.py" line="966"/> <source><b>Zoom in</b><p>Zoom in on the text. This makes the text bigger.</p></source> <translation><b>Vergrößern</b><p>Den angezeigten Text vergrößern.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="969"/> + <location filename="../Helpviewer/HelpWindow.py" line="974"/> <source>Zoom &out</source> <translation>Ver&kleinern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="977"/> + <location filename="../Helpviewer/HelpWindow.py" line="982"/> <source><b>Zoom out</b><p>Zoom out on the text. This makes the text smaller.</p></source> <translation><b>Verkleinern</b><p>Den angezeigten Text verkleinern.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1600"/> + <location filename="../Helpviewer/HelpWindow.py" line="1605"/> <source>H&istory</source> <translation>&Chronik</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="747"/> + <location filename="../Helpviewer/HelpWindow.py" line="752"/> <source>&Reload</source> <translation>E&rneut laden</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="754"/> + <location filename="../Helpviewer/HelpWindow.py" line="759"/> <source>Reload the current help screen</source> <translation>Die aktuelle Hilfeseite ernaut laden</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="756"/> + <location filename="../Helpviewer/HelpWindow.py" line="761"/> <source><b>Reload</b><p>Reloads the current help screen.</p></source> <translation><b>Erneut laden</b><p>Lädt die aktuelle Hilfeseite erneut.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="456"/> + <location filename="../Helpviewer/HelpWindow.py" line="461"/> <source>Ctrl+N</source> <comment>File|New Window</comment> <translation>Ctrl+N</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="471"/> + <location filename="../Helpviewer/HelpWindow.py" line="476"/> <source>Ctrl+O</source> <comment>File|Open</comment> <translation>Ctrl+O</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="584"/> + <location filename="../Helpviewer/HelpWindow.py" line="589"/> <source>Ctrl+P</source> <comment>File|Print</comment> <translation>Ctrl+P</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="631"/> + <location filename="../Helpviewer/HelpWindow.py" line="636"/> <source>Ctrl+W</source> <comment>File|Close</comment> <translation>Ctrl+W</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="678"/> + <location filename="../Helpviewer/HelpWindow.py" line="683"/> <source>Ctrl+Q</source> <comment>File|Quit</comment> <translation>Ctrl+Q</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="795"/> + <location filename="../Helpviewer/HelpWindow.py" line="800"/> <source>&Find...</source> <translation>&Suchen...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="801"/> + <location filename="../Helpviewer/HelpWindow.py" line="806"/> <source>Find text in page</source> <translation>Text in Seite suchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="802"/> + <location filename="../Helpviewer/HelpWindow.py" line="807"/> <source><b>Find</b><p>Find text in the current page.</p></source> <translation><b>Suchen</b><p>Text in der angezeigten Seite suchen.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="810"/> + <location filename="../Helpviewer/HelpWindow.py" line="815"/> <source>Find &next</source> <translation>&Weitersuchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="826"/> + <location filename="../Helpviewer/HelpWindow.py" line="831"/> <source>Find &previous</source> <translation>&Rückwärtssuchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="780"/> + <location filename="../Helpviewer/HelpWindow.py" line="785"/> <source>Ctrl+C</source> <comment>Edit|Copy</comment> <translation>Ctrl+C</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1692"/> + <location filename="../Helpviewer/HelpWindow.py" line="1697"/> <source>File</source> <translation>Datei</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1717"/> - <source>Edit</source> - <translation>Bearbeiten</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1722"/> + <source>Edit</source> + <translation>Bearbeiten</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1727"/> <source>View</source> <translation>Ansicht</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1731"/> + <location filename="../Helpviewer/HelpWindow.py" line="1736"/> <source>Find</source> <translation>Suchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1769"/> + <location filename="../Helpviewer/HelpWindow.py" line="1774"/> <source>Help</source> <translation>Hilfe</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1776"/> + <location filename="../Helpviewer/HelpWindow.py" line="1781"/> <source>Go</source> <translation>Gehe zu</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2026"/> + <location filename="../Helpviewer/HelpWindow.py" line="1984"/> <source>Help Files (*.html *.htm);;PDF Files (*.pdf);;CHM Files (*.chm);;All Files (*)</source> <translation>Hilfedateien (*.html *.htm);;PDF-Dateien (*.pdf);;CHM Dateien (*.chm);;Alle Dateien (*)</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="441"/> + <location filename="../Helpviewer/HelpWindow.py" line="446"/> <source>&New Tab</source> <translation>&Neues Register</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="441"/> + <location filename="../Helpviewer/HelpWindow.py" line="446"/> <source>Ctrl+T</source> <comment>File|New Tab</comment> <translation>Ctrl+T</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="448"/> + <location filename="../Helpviewer/HelpWindow.py" line="453"/> <source><b>New Tab</b><p>This opens a new help window tab.</p></source> <translation><b>Neues Register</b><p>Dies öffnet ein neues Hilfe Register.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="463"/> + <location filename="../Helpviewer/HelpWindow.py" line="468"/> <source><b>New Window</b><p>This opens a new help browser window.</p></source> <translation><b>Neues Fenster</b><p>Dies öffnet ein neues Hilfeanzeiger Fenster.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="639"/> + <location filename="../Helpviewer/HelpWindow.py" line="644"/> <source><b>Close</b><p>Closes the current help window.</p></source> <translation><b>Schließen</b><p>Schließt das aktuelle Hilfefenster.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="647"/> - <source>Close &All</source> - <translation>Alle &schließen</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="652"/> + <source>Close &All</source> + <translation>Alle &schließen</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="657"/> <source><b>Close All</b><p>Closes all help windows except the first one.</p></source> <translation><b>Alle schließen</b><p>Schließt alle Hilfefenster mit Ausnahme des ersten.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="631"/> + <location filename="../Helpviewer/HelpWindow.py" line="636"/> <source>Close</source> <translation>Schließen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="584"/> + <location filename="../Helpviewer/HelpWindow.py" line="589"/> <source>Print</source> <translation>Drucken</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="447"/> + <location filename="../Helpviewer/HelpWindow.py" line="452"/> <source>Open a new help window tab</source> <translation>Öffne ein neues Hilferegister</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="462"/> + <location filename="../Helpviewer/HelpWindow.py" line="467"/> <source>Open a new help browser window</source> <translation>Öffne ein neues Hilfeanzeiger Fenster</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="487"/> + <location filename="../Helpviewer/HelpWindow.py" line="492"/> <source>Open File in New &Tab</source> <translation>Datei in neuem &Register öffnen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="487"/> + <location filename="../Helpviewer/HelpWindow.py" line="492"/> <source>Shift+Ctrl+O</source> <comment>File|Open in new tab</comment> <translation>Shift+Ctrl+O</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="493"/> + <location filename="../Helpviewer/HelpWindow.py" line="498"/> <source>Open a help file for display in a new tab</source> <translation>Öffnet eine Hilfedatei zur Anzeige in einem neuen Register</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="495"/> + <location filename="../Helpviewer/HelpWindow.py" line="500"/> <source><b>Open File in New Tab</b><p>This opens a new help file for display in a new tab. It pops up a file selection dialog.</p></source> <translation><b>Datei in neuem Register öffnen</b><p>Dies öffnet eine Hilfedatei zur Anzeige in einem neuen Register. Es wird zunächst ein Dateiauswahldialog angezeigt.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="441"/> + <location filename="../Helpviewer/HelpWindow.py" line="446"/> <source>New Tab</source> <translation>Neues Register</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="456"/> + <location filename="../Helpviewer/HelpWindow.py" line="461"/> <source>New Window</source> <translation>Neues Fenster</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="487"/> + <location filename="../Helpviewer/HelpWindow.py" line="492"/> <source>Open File in New Tab</source> <translation>Datei in neuem Register öffnen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="647"/> + <location filename="../Helpviewer/HelpWindow.py" line="652"/> <source>Close All</source> <translation>Alle schließen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="678"/> + <location filename="../Helpviewer/HelpWindow.py" line="683"/> <source>Quit</source> <translation>Beenden</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="696"/> + <location filename="../Helpviewer/HelpWindow.py" line="701"/> <source>Backward</source> <translation>Zurück</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="696"/> + <location filename="../Helpviewer/HelpWindow.py" line="701"/> <source>Alt+Left</source> <comment>Go|Backward</comment> <translation>Alt+Left</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="696"/> + <location filename="../Helpviewer/HelpWindow.py" line="701"/> <source>Backspace</source> <comment>Go|Backward</comment> <translation>Backspace</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="713"/> + <location filename="../Helpviewer/HelpWindow.py" line="718"/> <source>Forward</source> <translation>Vorwärts</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="713"/> + <location filename="../Helpviewer/HelpWindow.py" line="718"/> <source>Alt+Right</source> <comment>Go|Forward</comment> <translation>Alt+Right</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="713"/> + <location filename="../Helpviewer/HelpWindow.py" line="718"/> <source>Shift+Backspace</source> <comment>Go|Forward</comment> <translation>Shift+Backspace</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="731"/> + <location filename="../Helpviewer/HelpWindow.py" line="736"/> <source>Home</source> <translation>Home</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="731"/> + <location filename="../Helpviewer/HelpWindow.py" line="736"/> <source>Ctrl+Home</source> <comment>Go|Home</comment> <translation>Ctrl+Home</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="747"/> + <location filename="../Helpviewer/HelpWindow.py" line="752"/> <source>Reload</source> <translation>Erneut laden</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="747"/> + <location filename="../Helpviewer/HelpWindow.py" line="752"/> <source>Ctrl+R</source> <comment>Go|Reload</comment> <translation>Ctrl+R</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="780"/> + <location filename="../Helpviewer/HelpWindow.py" line="785"/> <source>Copy</source> <translation>Kopieren</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="795"/> + <location filename="../Helpviewer/HelpWindow.py" line="800"/> <source>Find...</source> <translation>Suchen...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="795"/> + <location filename="../Helpviewer/HelpWindow.py" line="800"/> <source>Ctrl+F</source> <comment>Edit|Find</comment> <translation>Ctrl+F</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="810"/> + <location filename="../Helpviewer/HelpWindow.py" line="815"/> <source>Find next</source> <translation>Weitersuchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="810"/> + <location filename="../Helpviewer/HelpWindow.py" line="815"/> <source>F3</source> <comment>Edit|Find next</comment> <translation>F3</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="826"/> + <location filename="../Helpviewer/HelpWindow.py" line="831"/> <source>Find previous</source> <translation>Rückwärtssuchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="826"/> + <location filename="../Helpviewer/HelpWindow.py" line="831"/> <source>Shift+F3</source> <comment>Edit|Find previous</comment> <translation>Shift+F3</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="859"/> + <location filename="../Helpviewer/HelpWindow.py" line="864"/> <source>Add Bookmark</source> <translation>Lesezeichen hinzufügen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="906"/> + <location filename="../Helpviewer/HelpWindow.py" line="911"/> <source>What's This?</source> <translation>Was ist das?</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="906"/> + <location filename="../Helpviewer/HelpWindow.py" line="911"/> <source>Shift+F1</source> <comment>Help|What's This?'</comment> <translation>Shift+F1</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="925"/> + <location filename="../Helpviewer/HelpWindow.py" line="930"/> <source>About</source> <translation>Über</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="939"/> + <location filename="../Helpviewer/HelpWindow.py" line="944"/> <source>About Qt</source> <translation>Über Qt</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="953"/> + <location filename="../Helpviewer/HelpWindow.py" line="958"/> <source>Zoom in</source> <translation>Vergrößern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="953"/> + <location filename="../Helpviewer/HelpWindow.py" line="958"/> <source>Ctrl++</source> <comment>View|Zoom in</comment> <translation>Ctrl++</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="969"/> + <location filename="../Helpviewer/HelpWindow.py" line="974"/> <source>Zoom out</source> <translation>Verkleinern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="969"/> + <location filename="../Helpviewer/HelpWindow.py" line="974"/> <source>Ctrl+-</source> <comment>View|Zoom out</comment> <translation>Ctrl+-</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="816"/> + <location filename="../Helpviewer/HelpWindow.py" line="821"/> <source>Find next occurrence of text in page</source> <translation>Das nächste Vorkommen des Textes in der Seite suchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="818"/> + <location filename="../Helpviewer/HelpWindow.py" line="823"/> <source><b>Find next</b><p>Find the next occurrence of text in the current page.</p></source> <translation><b>Weitersuchen</b><p>Suche das nächste Vorkommen des Textes in der aktuellen Seite.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="832"/> + <location filename="../Helpviewer/HelpWindow.py" line="837"/> <source>Find previous occurrence of text in page</source> <translation>Das vorherige Vorkommen des Textes in der Seite suchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="834"/> + <location filename="../Helpviewer/HelpWindow.py" line="839"/> <source><b>Find previous</b><p>Find the previous occurrence of text in the current page.</p></source> <translation><b>Rückwärtssuchen</b><p>Suche das vorherige Vorkommen des Textes in der aktuellen Seite.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="615"/> - <source>Print Preview</source> - <translation>Druckvorschau</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="620"/> + <source>Print Preview</source> + <translation>Druckvorschau</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="625"/> <source>Print preview of the displayed help</source> <translation>Druckvorschau der angezeigten Hilfe</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="622"/> + <location filename="../Helpviewer/HelpWindow.py" line="627"/> <source><b>Print Preview</b><p>Print preview of the displayed help text.</p></source> <translation><b>Druckvorschau</b><p>Zeigt eine Druckvorschau des angezeigten Hilfetextes.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1048"/> + <location filename="../Helpviewer/HelpWindow.py" line="1053"/> <source>Show next tab</source> <translation>Zeige nächste Seite</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1048"/> + <location filename="../Helpviewer/HelpWindow.py" line="1053"/> <source>Ctrl+Alt+Tab</source> <translation>Ctrl+Alt+Tab</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1058"/> + <location filename="../Helpviewer/HelpWindow.py" line="1063"/> <source>Show previous tab</source> <translation>Zeige vorherige Seite</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1058"/> + <location filename="../Helpviewer/HelpWindow.py" line="1063"/> <source>Shift+Ctrl+Alt+Tab</source> <translation>Shift+Ctrl+Alt+Tab</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1068"/> + <location filename="../Helpviewer/HelpWindow.py" line="1073"/> <source>Switch between tabs</source> <translation>Zwischen Tabs umschalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1068"/> + <location filename="../Helpviewer/HelpWindow.py" line="1073"/> <source>Ctrl+1</source> <translation>Ctrl+1</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1317"/> - <source>Clear icons database</source> - <translation>Icondatenbank löschen</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1322"/> + <source>Clear icons database</source> + <translation>Icondatenbank löschen</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1327"/> <source>Clear the database of favicons</source> <translation>Löscht die Datenbank mit den Favicons</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1324"/> + <location filename="../Helpviewer/HelpWindow.py" line="1329"/> <source><b>Clear icons database</b><p>Clears the database of favicons of previously visited URLs.</p></source> <translation><b>Icondatenbank löschen</b><p>Löscht die Datenbank mit den Favicons besuchter URLs.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1078"/> + <location filename="../Helpviewer/HelpWindow.py" line="1083"/> <source>Preferences</source> <translation>Einstellungen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1078"/> + <location filename="../Helpviewer/HelpWindow.py" line="1083"/> <source>&Preferences...</source> <translation>&Einstellungen...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1082"/> + <location filename="../Helpviewer/HelpWindow.py" line="1087"/> <source>Set the prefered configuration</source> <translation>Konfiguriert die Einstellungen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1084"/> + <location filename="../Helpviewer/HelpWindow.py" line="1089"/> <source><b>Preferences</b><p>Set the configuration items of the application with your prefered values.</p></source> <translation><b>Einstellungen</b><p>Konfiguriert die einstellbaren Parameter der Applikation nach Ihren Wünschen.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="182"/> + <location filename="../Helpviewer/HelpWindow.py" line="187"/> <source>Contents</source> <translation>Inhalt</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="651"/> + <location filename="../Helpviewer/HelpWindow.py" line="656"/> <source>Close all help windows</source> <translation>Schließt alle Hilfefenster</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1195"/> - <source>Sync with Table of Contents</source> - <translation>Mit Inhalt synchronisieren</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1200"/> + <source>Sync with Table of Contents</source> + <translation>Mit Inhalt synchronisieren</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1205"/> <source>Synchronizes the table of contents with current page</source> <translation>Synchronisiert das Inhaltsverzeichnis mit der aktuellen Seite</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1202"/> + <location filename="../Helpviewer/HelpWindow.py" line="1207"/> <source><b>Sync with Table of Contents</b><p>Synchronizes the table of contents with current page.</p></source> <translation><b>Mit Inhalt synchronisieren</b><p>Synchronisiert das Inhaltsverzeichnis mit der aktuellen Seite.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1211"/> + <location filename="../Helpviewer/HelpWindow.py" line="1216"/> <source>Table of Contents</source> <translation>Inhaltsverzeichnis</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1215"/> + <location filename="../Helpviewer/HelpWindow.py" line="1220"/> <source>Shows the table of contents window</source> <translation>Zeigt das Fenster mit dem Inhaltsverzeichnis an</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1217"/> + <location filename="../Helpviewer/HelpWindow.py" line="1222"/> <source><b>Table of Contents</b><p>Shows the table of contents window.</p></source> <translation><b>Inhaltsverzeichnis</b><p>Zeigt das Fenster mit dem Inhaltsverzeichnis an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1254"/> + <location filename="../Helpviewer/HelpWindow.py" line="1259"/> <source>Manage QtHelp Documents</source> <translation>QtHelp-Dokumente verwalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1258"/> + <location filename="../Helpviewer/HelpWindow.py" line="1263"/> <source>Shows a dialog to manage the QtHelp documentation set</source> <translation>Zeigt einen Dialog zur Verwaltung der QtHelp-Dokumente</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1260"/> + <location filename="../Helpviewer/HelpWindow.py" line="1265"/> <source><b>Manage QtHelp Documents</b><p>Shows a dialog to manage the QtHelp documentation set.</p></source> <translation><b>QtHelp-Dokumente verwalten</b><p>Zeigt einen Dialog zur Verwaltung der QtHelp Dokumente.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1670"/> + <location filename="../Helpviewer/HelpWindow.py" line="1675"/> <source>&Window</source> <translation>&Fenster</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1739"/> - <source>Filter</source> - <translation>Filter</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1744"/> + <source>Filter</source> + <translation>Filter</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1749"/> <source>Filtered by: </source> <translation>Filter: </translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2672"/> + <location filename="../Helpviewer/HelpWindow.py" line="2633"/> <source>Could not find an associated content.</source> <translation>Konnte keinen zugehörigen Inhalt finden.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1270"/> + <location filename="../Helpviewer/HelpWindow.py" line="1275"/> <source>Manage QtHelp Filters</source> <translation>QtHelp-Filter verwalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1274"/> + <location filename="../Helpviewer/HelpWindow.py" line="1279"/> <source>Shows a dialog to manage the QtHelp filters</source> <translation>Zeigt einen Dialog zur Verwaltung der QtHelp-Filter</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1276"/> + <location filename="../Helpviewer/HelpWindow.py" line="1281"/> <source><b>Manage QtHelp Filters</b><p>Shows a dialog to manage the QtHelp filters.</p></source> <translation><b>QtHelp-Filter verwalten</b><p>Zeigt einen Dialog zur Verwaltung der QtHelp-Filter.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1225"/> + <location filename="../Helpviewer/HelpWindow.py" line="1230"/> <source>Index</source> <translation>Index</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1229"/> + <location filename="../Helpviewer/HelpWindow.py" line="1234"/> <source>Shows the index window</source> <translation>Zeigt das Indexfenster an</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1231"/> + <location filename="../Helpviewer/HelpWindow.py" line="1236"/> <source><b>Index</b><p>Shows the index window.</p></source> <translation><b>Index</b><p>Zeigt das Indexfenster an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1239"/> + <location filename="../Helpviewer/HelpWindow.py" line="1244"/> <source>Search</source> <translation>Suchen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1243"/> + <location filename="../Helpviewer/HelpWindow.py" line="1248"/> <source>Shows the search window</source> <translation>Zeigt das Suchfenster an</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1245"/> + <location filename="../Helpviewer/HelpWindow.py" line="1250"/> <source><b>Search</b><p>Shows the search window.</p></source> <translation><b>Suchen</b><p>Zeigt das Suchfenster an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1285"/> + <location filename="../Helpviewer/HelpWindow.py" line="1290"/> <source>Reindex Documentation</source> <translation>Dokumentation reindizieren</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1289"/> + <location filename="../Helpviewer/HelpWindow.py" line="1294"/> <source>Reindexes the documentation set</source> <translation>Reindiziert die Dokumentation</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1291"/> + <location filename="../Helpviewer/HelpWindow.py" line="1296"/> <source><b>Reindex Documentation</b><p>Reindexes the documentation set.</p></source> <translation><b>Dokumentation reindizieren</b><p>Reindiziert die Dokumentation.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2795"/> + <location filename="../Helpviewer/HelpWindow.py" line="2756"/> <source>Updating search index</source> <translation>Aktualisiere Suchindex</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2865"/> + <location filename="../Helpviewer/HelpWindow.py" line="2826"/> <source>Looking for Documentation...</source> <translation>Suche nach Dokumentation...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2900"/> + <location filename="../Helpviewer/HelpWindow.py" line="2861"/> <source>Unfiltered</source> <translation>Ungefiltert</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2919"/> + <location filename="../Helpviewer/HelpWindow.py" line="2880"/> <source>Help Engine</source> <translation>Hilfe</translation> </message> <message> + <location filename="../Helpviewer/HelpWindow.py" line="671"/> + <source>Private Browsing</source> + <translation>Privates Browsen</translation> + </message> + <message> <location filename="../Helpviewer/HelpWindow.py" line="666"/> - <source>Private Browsing</source> - <translation>Privates Browsen</translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="661"/> <source>Private &Browsing</source> <translation>Privates &Browsen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="667"/> + <location filename="../Helpviewer/HelpWindow.py" line="672"/> <source><b>Private Browsing</b><p>Enables private browsing. In this mode no history is recorded anymore.</p></source> <translation><b>Privates Browsen</b><p>Schaltet das private Browsen ein. In diesem Modus wird keine Chronik mehr aufgezeichnet.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2369"/> + <location filename="../Helpviewer/HelpWindow.py" line="2329"/> <source>Full Screen</source> <translation>Vollbild</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1037"/> + <location filename="../Helpviewer/HelpWindow.py" line="1042"/> <source>&Full Screen</source> <translation>&Vollbild</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1037"/> + <location filename="../Helpviewer/HelpWindow.py" line="1042"/> <source>F11</source> <translation>F11</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1254"/> + <location filename="../Helpviewer/HelpWindow.py" line="1259"/> <source>Manage QtHelp &Documents</source> <translation>QtHelp &Dokumente verwalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1270"/> + <location filename="../Helpviewer/HelpWindow.py" line="1275"/> <source>Manage QtHelp &Filters</source> <translation>QtHelp &Filter verwalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1285"/> + <location filename="../Helpviewer/HelpWindow.py" line="1290"/> <source>&Reindex Documentation</source> <translation>Dokumentation &reindizieren</translation> </message> <message> + <location filename="../Helpviewer/HelpWindow.py" line="1310"/> + <source>Clear private data</source> + <translation>Private Daten löschen</translation> + </message> + <message> <location filename="../Helpviewer/HelpWindow.py" line="1305"/> - <source>Clear private data</source> - <translation>Private Daten löschen</translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1300"/> <source>&Clear private data</source> <translation>&Private Daten löschen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1307"/> + <location filename="../Helpviewer/HelpWindow.py" line="1312"/> <source><b>Clear private data</b><p>Clears the private data like browsing history, search history or the favicons database.</p></source> <translation><b>Private Daten löschen</b><p>Löscht private Daten wie die Web-Chronik, Such-Chronik oder die Icondatenbank.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1317"/> + <location filename="../Helpviewer/HelpWindow.py" line="1322"/> <source>Clear &icons database</source> <translation>Icondatenbank &löschen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1425"/> + <location filename="../Helpviewer/HelpWindow.py" line="1430"/> <source>Show the network monitor dialog</source> <translation>Zeigt den Netzwerkmonitordialog an</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1623"/> + <location filename="../Helpviewer/HelpWindow.py" line="1628"/> <source>&Settings</source> <translation>&Einstellungen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1661"/> + <location filename="../Helpviewer/HelpWindow.py" line="1666"/> <source>&Tools</source> <translation>&Werkzeuge</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1021"/> - <source>Show page source</source> - <translation>Seitenquelltext anzeigen</translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1021"/> - <source>Ctrl+U</source> - <translation>Ctrl+U</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1026"/> + <source>Show page source</source> + <translation>Seitenquelltext anzeigen</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1026"/> + <source>Ctrl+U</source> + <translation>Ctrl+U</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1031"/> <source>Show the page source in an editor</source> <translation>Zeige den Seitenquelltext in einem Editor</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1028"/> + <location filename="../Helpviewer/HelpWindow.py" line="1033"/> <source><b>Show page source</b><p>Show the page source in an editor.</p></source> <translation><b>Seitenquelltext anzeigen</b><p>Zeige den Seitenquelltext in einem Editor.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1093"/> - <source>&Languages...</source> - <translation>&Sprachen...</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1098"/> + <source>&Languages...</source> + <translation>&Sprachen...</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1103"/> <source>Configure the accepted languages for web pages</source> <translation>Konfigurieren der bevorzugten Sprachen für Websites</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1100"/> + <location filename="../Helpviewer/HelpWindow.py" line="1105"/> <source><b>Languages</b><p>Configure the accepted languages for web pages.</p></source> <translation><b>Sprachen</b><p>Konfigurieren der bevorzugten Sprachen für Websites.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1093"/> + <location filename="../Helpviewer/HelpWindow.py" line="1098"/> <source>Languages</source> <translation>Sprachen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1109"/> + <location filename="../Helpviewer/HelpWindow.py" line="1114"/> <source>Cookies</source> <translation>Cookies</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1109"/> + <location filename="../Helpviewer/HelpWindow.py" line="1114"/> <source>C&ookies...</source> <translation>C&ookies...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1113"/> + <location filename="../Helpviewer/HelpWindow.py" line="1118"/> <source>Configure cookies handling</source> <translation>Cookieverwaltung konfigurieren</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1115"/> + <location filename="../Helpviewer/HelpWindow.py" line="1120"/> <source><b>Cookies</b><p>Configure cookies handling.</p></source> <translation><b>Cookies</b><p>Cookieverwaltung konfigurieren</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1751"/> + <location filename="../Helpviewer/HelpWindow.py" line="1756"/> <source>Settings</source> <translation>Einstellungen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="985"/> + <location filename="../Helpviewer/HelpWindow.py" line="990"/> <source>Zoom reset</source> <translation>Vergrößerung zurücksetzen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="985"/> + <location filename="../Helpviewer/HelpWindow.py" line="990"/> <source>Zoom &reset</source> <translation>Vergrößerung &zurücksetzen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="985"/> + <location filename="../Helpviewer/HelpWindow.py" line="990"/> <source>Ctrl+0</source> <comment>View|Zoom reset</comment> <translation>Ctrl+0</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="991"/> + <location filename="../Helpviewer/HelpWindow.py" line="996"/> <source>Reset the zoom of the text</source> <translation>Die Textgröße zurücksetzen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1003"/> + <location filename="../Helpviewer/HelpWindow.py" line="1008"/> <source>Zoom text only</source> <translation>Nur Text vergrößern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1003"/> - <source>Zoom &text only</source> - <translation>Nur &Text vergrößern</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1008"/> + <source>Zoom &text only</source> + <translation>Nur &Text vergrößern</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1013"/> <source>Zoom text only; pictures remain constant</source> <translation>Nur Text vergrößern; Bilder behalten ihre Größe</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1010"/> + <location filename="../Helpviewer/HelpWindow.py" line="1015"/> <source><b>Zoom text only</b><p>Zoom text only; pictures remain constant.</p></source> <translation><b>Nur Text vergrößern</b><p>Nur Text vergrößern; Bilder behalten ihre Größe.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="993"/> + <location filename="../Helpviewer/HelpWindow.py" line="998"/> <source><b>Zoom reset</b><p>Reset the zoom of the text. This sets the zoom factor to 100%.</p></source> <translation><b>Vergrößerung zurücksetzen</b><p>Setzt die Vergrößerung auf den Wert 100% zurück.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="456"/> + <location filename="../Helpviewer/HelpWindow.py" line="461"/> <source>New &Window</source> <translation>Neues &Fenster</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="554"/> + <location filename="../Helpviewer/HelpWindow.py" line="559"/> <source>Import Bookmarks</source> <translation>Lesezeichen importieren</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="554"/> + <location filename="../Helpviewer/HelpWindow.py" line="559"/> <source>&Import Bookmarks...</source> <translation>Lesezeichen &importieren...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="558"/> + <location filename="../Helpviewer/HelpWindow.py" line="563"/> <source>Import bookmarks from other browsers</source> <translation>Importiere Lesezeichen von anderen Browsern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="560"/> + <location filename="../Helpviewer/HelpWindow.py" line="565"/> <source><b>Import Bookmarks</b><p>Import bookmarks from other browsers.</p></source> <translation><b>Lesezeichen importieren</b><p>Importiere Lesezeichen von anderen Browsern.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="569"/> + <location filename="../Helpviewer/HelpWindow.py" line="574"/> <source>Export Bookmarks</source> <translation>Lesezeichen exportieren</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="569"/> + <location filename="../Helpviewer/HelpWindow.py" line="574"/> <source>&Export Bookmarks...</source> <translation>Lesezeichen &exportieren...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="573"/> + <location filename="../Helpviewer/HelpWindow.py" line="578"/> <source>Export the bookmarks into a file</source> <translation>Exportiert die Lesezeichen in eine Datei</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="575"/> + <location filename="../Helpviewer/HelpWindow.py" line="580"/> <source><b>Export Bookmarks</b><p>Export the bookmarks into a file.</p></source> <translation><b>Lesezeichen exportieren</b><p>Exportiert die Lesezeichen in eine Datei.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="843"/> + <location filename="../Helpviewer/HelpWindow.py" line="848"/> <source>Manage Bookmarks</source> <translation>Lesezeichen verwalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="843"/> + <location filename="../Helpviewer/HelpWindow.py" line="848"/> <source>&Manage Bookmarks...</source> <translation>Lesezeichen &verwalten...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="843"/> - <source>Ctrl+Shift+B</source> - <comment>Help|Manage bookmarks</comment> - <translation>Ctrl+Shift+B</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="848"/> + <source>Ctrl+Shift+B</source> + <comment>Help|Manage bookmarks</comment> + <translation>Ctrl+Shift+B</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="853"/> <source>Open a dialog to manage the bookmarks.</source> <translation>Öffnet einen Dialog zur Verwaltung der Lesezeichen.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="850"/> + <location filename="../Helpviewer/HelpWindow.py" line="855"/> <source><b>Manage Bookmarks...</b><p>Open a dialog to manage the bookmarks.</p></source> <translation><b>Lesezeichen verwalten...</b><p>Öffnet einen Dialog zur Verwaltung der Lesezeichen.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="859"/> + <location filename="../Helpviewer/HelpWindow.py" line="864"/> <source>Add &Bookmark...</source> <translation>Lesezeichen &hinzufügen...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="859"/> + <location filename="../Helpviewer/HelpWindow.py" line="864"/> <source>Ctrl+D</source> <comment>Help|Add bookmark</comment> <translation>Ctrl+D</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="866"/> + <location filename="../Helpviewer/HelpWindow.py" line="871"/> <source>Open a dialog to add a bookmark.</source> <translation>Öffnet einen Dialog zum Hinzufügen von Lesezeichen.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="868"/> + <location filename="../Helpviewer/HelpWindow.py" line="873"/> <source><b>Add Bookmark</b><p>Open a dialog to add the current URL as a bookmark.</p></source> <translation><b>Lesezeichen hinzufügen...</b><p>Öffnet einen Dialog zum Hinzufügen von Lesezeichen.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="876"/> + <location filename="../Helpviewer/HelpWindow.py" line="881"/> <source>Add Folder</source> <translation>Ordner hinzufügen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="876"/> + <location filename="../Helpviewer/HelpWindow.py" line="881"/> <source>Add &Folder...</source> <translation>&Ordner hinzufügen...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="880"/> + <location filename="../Helpviewer/HelpWindow.py" line="885"/> <source>Open a dialog to add a new bookmarks folder.</source> <translation>Öffnet einen Dialog zum Hinzufügen eines Lesezeichenordners.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="882"/> + <location filename="../Helpviewer/HelpWindow.py" line="887"/> <source><b>Add Folder...</b><p>Open a dialog to add a new bookmarks folder.</p></source> <translation><b>Ordner hinzufügen...</b><p>Öffnet einen Dialog zum Hinzufügen eines Lesezeichenordners.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="891"/> + <location filename="../Helpviewer/HelpWindow.py" line="896"/> <source>Bookmark All Tabs</source> <translation>Lesezeichen für alle Tabs</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="891"/> + <location filename="../Helpviewer/HelpWindow.py" line="896"/> <source>Bookmark All Tabs...</source> <translation>Lesezeichen für alle Tabs...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="895"/> + <location filename="../Helpviewer/HelpWindow.py" line="900"/> <source>Bookmark all open tabs.</source> <translation>Fügt Lesezeichen für alle offenen Tabs hinzu.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="897"/> + <location filename="../Helpviewer/HelpWindow.py" line="902"/> <source><b>Bookmark All Tabs...</b><p>Open a dialog to add a new bookmarks folder for all open tabs.</p></source> <translation><b>Lesezeichen für alle Tabs...</b><p>Öffnet einen Dialog, um einen neuen Lesezeichenordner für alle offenen Tabs hinzuzufügen.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2168"/> + <location filename="../Helpviewer/HelpWindow.py" line="2126"/> <source>Saved Tabs</source> <translation>Gesicherte Tabs</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="747"/> + <location filename="../Helpviewer/HelpWindow.py" line="752"/> <source>F5</source> <comment>Go|Reload</comment> <translation>F5</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="764"/> + <location filename="../Helpviewer/HelpWindow.py" line="769"/> <source>Stop</source> <translation>Anhalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="764"/> + <location filename="../Helpviewer/HelpWindow.py" line="769"/> <source>&Stop</source> <translation>An&halten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="764"/> + <location filename="../Helpviewer/HelpWindow.py" line="769"/> <source>Ctrl+.</source> <comment>Go|Stop</comment> <translation>Ctrl+.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="764"/> + <location filename="../Helpviewer/HelpWindow.py" line="769"/> <source>Esc</source> <comment>Go|Stop</comment> <translation>Esc</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="771"/> + <location filename="../Helpviewer/HelpWindow.py" line="776"/> <source>Stop loading</source> <translation>Laden anhalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="772"/> + <location filename="../Helpviewer/HelpWindow.py" line="777"/> <source><b>Stop</b><p>Stops loading of the current tab.</p></source> <translation><b>Anhalten</b><p>Hält das Laden der aktuellen Seite an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="504"/> + <location filename="../Helpviewer/HelpWindow.py" line="509"/> <source>&Save As...</source> <translation>&Speichern unter...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="504"/> + <location filename="../Helpviewer/HelpWindow.py" line="509"/> <source>Shift+Ctrl+S</source> <comment>File|Save As</comment> <translation>Shift+Ctrl+S</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="510"/> + <location filename="../Helpviewer/HelpWindow.py" line="515"/> <source>Save the current page to disk</source> <translation>Speichert die aktuelle Seite</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="512"/> + <location filename="../Helpviewer/HelpWindow.py" line="517"/> <source><b>Save As...</b><p>Saves the current page to disk.</p></source> <translation><b>Speichern unter</b><p>Dies speichert die aktuelle Seite in eine Datei.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1333"/> - <source>Configure Search Engines</source> - <translation>Suchmaschinen verwalten</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1338"/> + <source>Configure Search Engines</source> + <translation>Suchmaschinen verwalten</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1343"/> <source>Configure the available search engines</source> <translation>Verwalte die verfügbaren Suchmaschinen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1340"/> + <location filename="../Helpviewer/HelpWindow.py" line="1345"/> <source><b>Configure Search Engines...</b><p>Opens a dialog to configure the available search engines.</p></source> <translation><b>Suchmaschinen verwalten...</b><p>Öffnet einen Dialog zur Verwaltung der verfügbaren Suchmaschinen.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1350"/> + <location filename="../Helpviewer/HelpWindow.py" line="1355"/> <source>Manage Saved Passwords</source> <translation>Gespeicherte Passwörter verwalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1350"/> + <location filename="../Helpviewer/HelpWindow.py" line="1355"/> <source>Manage Saved Passwords...</source> <translation>Gespeicherte Passwörter verwalten...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1356"/> + <location filename="../Helpviewer/HelpWindow.py" line="1361"/> <source>Manage the saved passwords</source> <translation>Verwalten gespeicherter Passwörter</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1358"/> + <location filename="../Helpviewer/HelpWindow.py" line="1363"/> <source><b>Manage Saved Passwords...</b><p>Opens a dialog to manage the saved passwords.</p></source> <translation><b>Gespeicherte Passwörter verwalten...</b><p>Öffnet einen Dialog zur Verwaltung gespeicherter Passwörter.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1366"/> + <location filename="../Helpviewer/HelpWindow.py" line="1371"/> <source>Ad Block</source> <translation>Ad Block</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1366"/> + <location filename="../Helpviewer/HelpWindow.py" line="1371"/> <source>&Ad Block...</source> <translation>&Ad Block...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1372"/> + <location filename="../Helpviewer/HelpWindow.py" line="1377"/> <source>Configure AdBlock subscriptions and rules</source> <translation>Konfiguriert AdBlock Abonnements und Regeln</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1374"/> + <location filename="../Helpviewer/HelpWindow.py" line="1379"/> <source><b>Ad Block...</b><p>Opens a dialog to configure AdBlock subscriptions and rules.</p></source> <translation><b>Ad Block...</b><p>Öffnet einen Dialog zum konfigurieren von AdBlock Abonnements und Regeln</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="599"/> - <source>Print as PDF</source> - <translation>Als PDF drucken</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="604"/> + <source>Print as PDF</source> + <translation>Als PDF drucken</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="609"/> <source>Print the displayed help as PDF</source> <translation>Druckt die angezeigte Hilfe als PDF</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="606"/> + <location filename="../Helpviewer/HelpWindow.py" line="611"/> <source><b>Print as PDF</b><p>Print the displayed help text as a PDF file.</p></source> <translation><b>Als PDF drucken</b><p>Druckt den angezeigten Hilfetext als PDF-Datei.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1124"/> + <location filename="../Helpviewer/HelpWindow.py" line="1129"/> <source>Offline Storage</source> <translation>Offline-Speicher</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1124"/> - <source>Offline &Storage...</source> - <translation>Offline-&Speicher...</translation> - </message> - <message> <location filename="../Helpviewer/HelpWindow.py" line="1129"/> + <source>Offline &Storage...</source> + <translation>Offline-&Speicher...</translation> + </message> + <message> + <location filename="../Helpviewer/HelpWindow.py" line="1134"/> <source>Configure offline storage</source> <translation>Konfiguren des Offline-Speichers</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1131"/> + <location filename="../Helpviewer/HelpWindow.py" line="1136"/> <source><b>Offline Storage</b><p>Opens a dialog to configure offline storage.</p></source> <translation><b>Offline-Speicher</b><p>Öffnet einen Dialog zum Konfigurieren des Offline-Speichers.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1333"/> + <location filename="../Helpviewer/HelpWindow.py" line="1338"/> <source>Configure Search &Engines...</source> <translation>Such&maschinen verwalten...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2399"/> + <location filename="../Helpviewer/HelpWindow.py" line="2359"/> <source><b>Are you sure you want to turn on private browsing?</b><p>When private browsing is turned on, web pages are not added to the history, searches are not added to the list of recent searches and web site icons and cookies are not stored. HTML5 offline storage will be deactivated. Until you close the window, you can still click the Back and Forward buttons to return to the web pages you have opened.</p></source> <translation><b>Sind Sie sicher, dass Sie privates Browsen einschalten möchten?</b><p>Wenn das private Browsen eingeschaltet ist, werden keine Webseiten mehr zur Chronik hinzugefügt und Suchanfragen, Webseitenicons und Cookies werden nicht mehr gespeichert. HTML5-Offlinespeicher wird deaktiviert. Bis das Fenster geschlossen wird, können Sie jedoch weiterhin die Zurück- und Vorwärts-Knöpfe nutzen, um zu besuchten Webseiten zurückzukehren.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1579"/> + <location filename="../Helpviewer/HelpWindow.py" line="1584"/> <source>Text Encoding</source> <translation>Zeichenkodierung</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3350"/> + <location filename="../Helpviewer/HelpWindow.py" line="3312"/> <source>ISO</source> <translation>ISO</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3351"/> + <location filename="../Helpviewer/HelpWindow.py" line="3313"/> <source>Windows</source> <translation>Windows</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3352"/> + <location filename="../Helpviewer/HelpWindow.py" line="3314"/> <source>ISCII</source> <translation>ISCII</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3353"/> + <location filename="../Helpviewer/HelpWindow.py" line="3315"/> <source>Unicode</source> <translation>Unicode</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3354"/> + <location filename="../Helpviewer/HelpWindow.py" line="3316"/> <source>Other</source> <translation>Sonstige</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3355"/> + <location filename="../Helpviewer/HelpWindow.py" line="3317"/> <source>IBM</source> <translation>IBM</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3377"/> + <location filename="../Helpviewer/HelpWindow.py" line="3339"/> <source>Default Encoding</source> <translation>Standardkodierung</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1436"/> + <location filename="../Helpviewer/HelpWindow.py" line="1441"/> <source>Downloads</source> <translation>Downloads</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1440"/> + <location filename="../Helpviewer/HelpWindow.py" line="1445"/> <source>Shows the downloads window</source> <translation>Zeig das Downloadsfenster an</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1442"/> + <location filename="../Helpviewer/HelpWindow.py" line="1447"/> <source><b>Downloads</b><p>Shows the downloads window.</p></source> <translation><b>Downloads</b><p>Zeig das Downloadsfenster an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1829"/> + <location filename="../Helpviewer/HelpWindow.py" line="1834"/> <source>VirusTotal</source> <translation>VirusTotal</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1835"/> - <source><h2>File search</h2><p>In order to search for the last VirusTotal report on a given file just enter its hash. Currently the allowed hashes are MD5, SHA1 and SHA256. You can also search for a particular file report by typing in its permalink id.</p><h2>URL search</h2><p>URL searches are simple, just type in the given URL, the application will normalize it and compare it with the entries in VirusTotal's database. Alternatively you may enter the MD5 hash of an URL preceded by "url:", e.g. url:7f911bbcf618f052ac6b9928600d2820.</p><h2>User search</h2><p>Do you want to know whether a friend has a VT Community account? Simply type in his nick preceded by the symbol "@", e.g. @EmilianoMartinez.</p><h2>Search through comments</h2><p>The comments in VT Community may often help in disinfecting your PC or may proof themselves useful when analysing a particular malware sample, comment tags enable users to search through the VT Community reviews. The standard file tags are: {0} The standard URL tags are: {1}User generated tags are preceded by the symbol "#", e.g. #disinfect.</p></source> - <translation><h2>Dateisuche</h2><p>Um nach dem aktuellsten VirusTotal-Bericht einer Datei zu suchen, geben Sie den Hashwert ein. Momentan sind die Hashmethoden MD5, SHA1 und SHA256 zugelassen. Sie können auch nach einem Dateibericht suchen, indem Sie die Permalink-ID eingeben.</p><h2>URL-Suche</h2><p>URL-Suchen sind einfach. Geben Sie lediglich die URL ein. Die Anwendung normalisiert sie und vergleicht sie mit den Einträgen in der VirusTotal-Datenbank. Alternativ können Sie den MD5-Hashwert der URL mit vorangestelltem „url:“ eingeben, z.B. url:7f911bbcf618f052ac6b9928600d2820.</p><h2>Nutzersuche:</h2><p>Wollen Sie wissen, ob ein Freund ein VT-Community-Konto hat? Geben Sie einfach seinen Spitznamen mit vorangestelltem „@“-Symbol ein, z.B. @EmilianoMartinez.</p><h2>Kommentare durchsuchen</h2><p>Die Kommentare in der VT-Community können Ihnen oft helfen, Ihren PC zu desinfizieren, oder sind hilfreich bei der Untersuchung von Schadsoftware. Kommentartags erlauben es den Nutzern, die VT-Community-Reviews zu durchsuchen. Die standardisierten Dateitags sind: {0} Die standardisierten URL-Tags sind: {1}Von Nutzern definierte Tags werden mit einem „#“-Symbol eingeleitet, z.B. #disinfect.</p></translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1883"/> - <source>Search VirusTotal</source> - <translation>Suchen bei VirusTotal</translation> - </message> - <message> - <location filename="../Helpviewer/HelpWindow.py" line="1889"/> + <location filename="../Helpviewer/HelpWindow.py" line="1838"/> <source>Scan current site</source> <translation>Aktuelle Seite prüfen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3636"/> + <location filename="../Helpviewer/HelpWindow.py" line="3598"/> <source>VirusTotal Scan</source> <translation>VirusTotal-Prüfung</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="3636"/> + <location filename="../Helpviewer/HelpWindow.py" line="3598"/> <source><p>The VirusTotal scan could not be scheduled.<p> <p>Reason: {0}</p></source> <translation><p>Die VirusTotal-Prüfung konnte nicht beauftragt werden.<p> <p>Ursache: {0}</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1451"/> + <location filename="../Helpviewer/HelpWindow.py" line="1456"/> <source>RSS Feeds Dialog</source> <translation>RSS-Feeds-Dialog</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1451"/> + <location filename="../Helpviewer/HelpWindow.py" line="1456"/> <source>&RSS Feeds Dialog...</source> <translation>&RSS-Feeds-Dialog...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1451"/> + <location filename="../Helpviewer/HelpWindow.py" line="1456"/> <source>Ctrl+Shift+F</source> <comment>Help|RSS Feeds Dialog</comment> <translation>Ctrl+Shift+F</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1457"/> + <location filename="../Helpviewer/HelpWindow.py" line="1462"/> <source>Open a dialog showing the configured RSS feeds.</source> <translation>Öffnet einen Dialog mit den konfigurierten RSS-Feeds.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1459"/> + <location filename="../Helpviewer/HelpWindow.py" line="1464"/> <source><b>RSS Feeds Dialog...</b><p>Open a dialog to show the configured RSS feeds. It can be used to mange the feeds and to show their contents.</p></source> <translation><b>RSS-Feeds-Dialog...</b><p>Dies öffnet einen Dialog zur Anzeige der konfigurierten RSS-Feeds. Er kann verwendet werden, um sie zu verwalten und ihren Inhalt anzuzeigen.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1469"/> + <location filename="../Helpviewer/HelpWindow.py" line="1474"/> <source>Siteinfo Dialog</source> <translation>Seiteninformationen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1469"/> + <location filename="../Helpviewer/HelpWindow.py" line="1474"/> <source>&Siteinfo Dialog...</source> <translation>&Seiteninformationen...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1469"/> + <location filename="../Helpviewer/HelpWindow.py" line="1474"/> <source>Ctrl+Shift+I</source> <comment>Help|Siteinfo Dialog</comment> <translation>Ctrl+Shift+I</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1475"/> + <location filename="../Helpviewer/HelpWindow.py" line="1480"/> <source>Open a dialog showing some information about the current site.</source> <translation>Öffnet einen Dialog zur Anzeige von Informationen über die aktuelle Site.</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1477"/> + <location filename="../Helpviewer/HelpWindow.py" line="1482"/> <source><b>Siteinfo Dialog...</b><p>Opens a dialog showing some information about the current site.</p></source> <translation><b>Site Informationen...</b><p>Öffnet einen Dialog zur Anzeige von Informationen über die aktuelle Site.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1761"/> + <location filename="../Helpviewer/HelpWindow.py" line="1766"/> <source>Tools</source> <translation>Werkzeuge</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="953"/> + <location filename="../Helpviewer/HelpWindow.py" line="958"/> <source>Zoom In</source> <comment>View|Zoom in</comment> <translation>Vergrößern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="969"/> + <location filename="../Helpviewer/HelpWindow.py" line="974"/> <source>Zoom Out</source> <comment>View|Zoom out</comment> <translation>Verkleinern</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1420"/> + <location filename="../Helpviewer/HelpWindow.py" line="1425"/> <source>Network Monitor</source> <translation>Netzwerkmonitor</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1420"/> + <location filename="../Helpviewer/HelpWindow.py" line="1425"/> <source>&Network Monitor...</source> <translation>&Netzwerkmonitor...</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1427"/> + <location filename="../Helpviewer/HelpWindow.py" line="1432"/> <source><b>Network Monitor...</b><p>Shows the network monitor dialog.</p></source> <translation><b>Netzwerkmonitor...</b><p>Zeigt den Netzwerkmonitordialog an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="2376"/> + <location filename="../Helpviewer/HelpWindow.py" line="2336"/> <source>Restore Window</source> <translation>Fenster wiederherstellen</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1486"/> + <location filename="../Helpviewer/HelpWindow.py" line="1491"/> <source>Manage User Agent Settings</source> <translation>User-Agent-Einstellungen verwalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1486"/> + <location filename="../Helpviewer/HelpWindow.py" line="1491"/> <source>Manage &User Agent Settings</source> <translation>User-&Agent-Einstellungen verwalten</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1490"/> + <location filename="../Helpviewer/HelpWindow.py" line="1495"/> <source>Shows a dialog to manage the User Agent settings</source> <translation>Zeigt einen Dialog zum Verwalten der User-Agent-Einstellungen an</translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1492"/> + <location filename="../Helpviewer/HelpWindow.py" line="1497"/> <source><b>Manage User Agent Settings</b><p>Shows a dialog to manage the User Agent settings.</p></source> <translation><b>User-Agent-Einstellungen verwalten</b><p>Zeigt einen Dialog zum Verwalten der User-Agent-Einstellungen an.</p></translation> </message> <message> - <location filename="../Helpviewer/HelpWindow.py" line="1648"/> + <location filename="../Helpviewer/HelpWindow.py" line="1653"/> <source>Global User Agent</source> <translation>Globaler User Agent</translation> </message> <message> -